O primeiro passo para é montar o ambiente de desenvolvimento com um emulador. Para isso a TQTVD disponibiliza um emulador que pode ser executada em uma VirtualBox com Ubuntu.
Acesse o site: https://www.astrodevnet.com.br, realize o cadastro e faça o login. Escolha a opção AstroBox, Download e faça o download do AstroBox. No mesmo site, faça o download do Manual do Usuário e siga as instruções descritas no arquivo para montagem da máquina virtual contendo o Ubuntu + o emulador da TQTVD.
Etapa opcional
Eu prefiro desenvolver na minha máquina e só executar o emulador na máquina virtual. Pra mim, além de ficar independente do emulador, o desenvolvimento fica mais rápido, mas essa etapa é opcional.
Na máquina virtual, faça o download dos headers do kernel e instale:
wget http://security.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-2.6.32-24-generic_2.6.32-24.43_i386.deb wget http://security.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-2.6.32-24_2.6.32-24.43_all.deb dpkg -i linux-headers*
Instale os adicionais de convidado e compartilhe as pastas: /usr/bin/AstroBox/bin/app e /stickerCenter/stickers/Sticker conforme descrito nesse post. O meu fstab do guest ficou com as seguintes linhas:
app /usr/bin/AstroBox/bin/app vboxsf rw,uid=1000,gid=1000,auto,exec 0 0 sticker /stickerCenter/stickers/Sticker vboxsf rw,uid=1000,gid=1000,auto,exec 0 0
Eu compartilhei as seguintes pastas do sistema hospedeiro (Auto-mount e Make Permanent): /development/tvdigital/app e /development/tvdigital/sticker.
Para testar, monte o compartilhamento:
sudo mount app && sudo mount sticker
Atualização: A versão 4 do virtualbox não respeita o mapeamento feito no fstab e monta automaticamente o compartilhamento na pasta /media/sf_[nomecompartilhamento]. Então se você possui essa versão, não altere o fstab e nem monte o compartilhamento. Adicione seu usuário no grupo vboxsf:
sudo usermod -a -G vboxsf username
E adicione o seguinte na primeira linha do arquivo /etc/rc.local
mount --bind /media/sf_app /usr/bin/AstroBox/bin/app mount --bind /media/sf_sticker /stickerCenter/stickers/Sticker
Reinicie a máquina virtual.
Configurando o Eclipse
Você pode desenvolver em qualquer IDE, ou Bloco de Notas se preferir, desde que seu SO ou a IDE tenha suporte ao Apache ANT. No meu caso eu vou utilizar o Eclipse. Baixe e descompacte o Eclipse ou utilize um que você já tenha.
Copie os seguintes arquivos da máquina virtual:
- /usr/bin/AstroBox/lib/basis.jar
- /usr/bin/AstroBox/lib/charsets.jar
- /usr/bin/AstroBox/lib/jce.jar
- /usr/bin/AstroBox/lib/jsse-cdc.jar
- /usr/bin/AstroBox/lib/localedata.jar
- /usr/bin/AstroBox/lib/sunrsasign.jar
- /usr/bin/AstroBox/bin/java/astro.jar
Vá em Window, Preferences, Java, Build Path, User Libraries e clique em New. Coloque o nome BootAstroBox, marque a opção "System library (added to the boot class path)" e clique em OK.
Selecione ela e clique em "Add External JARs...". Selecione o arquivo basis.jar que foi baixado da máquina virtual. Novamente clique em New, coloque o nome de AstroBox (não marque a opção system library), clique em OK e adicione as libs restantes que foram citadas anteriormente. Você deve ficar com algo semelhante à esse:
Clique OK. Isso você só precisará fazer uma única vez. Após isso é só criar os projetos selecionando essas libraries.
Para criar um novo projeto de TV Digital (Ginga-J), vá em File, New, Java Project, dê um nome para o projeto e escolha "Use an execution environment JRE" com a opção CDC-1.1/Foundation-1.1. Clique em Next. Na aba Libraries, clique Add Library, User Library, Next. Selecione as duas Libraries criadas anteriormente e clique em Finish. Agora é só começar a desenvolver.
Você pode fazer alguns ajustes finos. Selecione o projeto criado, clique com o botão direito e selecione Properties. Acesse Java Build Path, Libraries, selecione a lib JRE System Library e clique em Remove. Dessa maneira, você irá evitar de utilizar classes proibidas no CDC, como as classes do pacote javax.swing e irá utilizar somente às classes das libs citadas anteriormente.
Para executar no emulador é só copiar o conteúdo da pasta bin do projeto, para a pasta compartilhada anteriormente.
Etapa mais opcional ainda
Para executar o emulador a partir do seu ambiente há a opção de utilizar SSH. Se você tem um cliente SSH para Windows é necessário verificar os procedimentos para fazer isso no seu cliente SSH, no meu caso, vou utilizar o do Linux.
Na máquina virtual, instale o server de SSH executando o seguinte comando:
sudo apt-get install openssh-server
Teste a partir de sua máquina o funcionamento com o seguinte comando:
ssh -XYC [usuario]@[IP] [comando]
Onde [usuario] é o seu usuário da máquina virtual, o [IP] é o IP da máquina virtual e [comando] é o comando que você deseja executar. O parâmetro XYC significa para realizar o forward do X11 (X) confiável (Y) e comprimir (C) os dados trafegados. Por exemplo, para testar:
ssh -XYC thiago@192.168.57.31 firefox
Insira a senha e verifique se o firefox vai abrir. O próximo passo é evitar pedir a senha. Para isso, execute o procedimento deste link. Execute o seguinte comando para testar a execução do emulador:
ssh -XYC [usuario]@[IP] "DISPLAY=:0 && cd /usr/bin/AstroBox/bin && ./platEmul"
Esse comando deve abrir o emulador dentro da máquina virtual à partir da sua máquina real.
Script Ant para automatizar o processo
Crie uma pasta para gerar os arquivos compactados e para execução dos scripts:
mkdir /development/tvdigital/pack mkdir /development/tvdigital/bin
Crie um arquivo o arquivo /development/tvdigital/bin/run.sh com o seguinte conteúdo:
#!/bin/bash # creating initial settings for sitools.cfg CONFIG_DIR="/development/tvdigital/bin" V_USER="thiago" V_HOST="192.168.57.31" echo "ait::version_number=1" > $CONFIG_DIR/sitools.cfg echo "ait::section_syntax_indicator=1" >> $CONFIG_DIR/sitools.cfg echo "ait::current_next_indicator=1" >> $CONFIG_DIR/sitools.cfg echo "ait::organization_id=1" >> $CONFIG_DIR/sitools.cfg echo "ait::application_id=266" >> $CONFIG_DIR/sitools.cfg echo "ait::application_control_code=1" >> $CONFIG_DIR/sitools.cfg echo "" >> $CONFIG_DIR/sitools.cfg echo "ait::protocol_id=1" >> $CONFIG_DIR/sitools.cfg echo "" >> $CONFIG_DIR/sitools.cfg echo "ait::visibility=11" >> $CONFIG_DIR/sitools.cfg echo "ait::application_priority=1" >> $CONFIG_DIR/sitools.cfg echo "ait::service_bound_flag=1" >> $CONFIG_DIR/sitools.cfg echo "" >> $CONFIG_DIR/sitools.cfg echo "ait::iso639_language_code=0" >> $CONFIG_DIR/sitools.cfg echo "ait::application_name=GingaAPP" >> $CONFIG_DIR/sitools.cfg echo "" >> $CONFIG_DIR/sitools.cfg echo "ait::application_type=java" >> $CONFIG_DIR/sitools.cfg echo "ait::initial_class=$1" >> $CONFIG_DIR/sitools.cfg echo "" >> $CONFIG_DIR/sitools.cfg scp $CONFIG_DIR/sitools.cfg $V_USER@$V_HOST:/usr/bin/AstroBox/bin/config/ ssh -XYC $V_USER@$V_HOST "DISPLAY=:0 && cd /usr/bin/AstroBox/bin && ./platEmul"
Crie um arquivo o arquivo /development/tvdigital/bin/stop.sh com o seguinte conteúdo:
#!/bin/bash CONFIG_DIR="/development/tvdigital/bin" V_USER="thiago" V_HOST="192.168.57.31" ssh -YC $V_USER@$V_HOST "pkill -f platEmul"
Altere as variáveis dois dois arquivos CONFIG_DIR, V_USER e V_HOST para os valores de acordo com o seu ambiente. Dê permissão para execução do script:
chmod +x /development/tvdigital/bin/*.sh
Para facilitar a compilação e execução da aplicação direto no emulador, utilize o seguinte script ant no seu projeto:
<!--?xml version="1.0" encoding="UTF-8"?-->
Altere o nome do projeto e os properties de acordo com o configurado e execute o script ant para parar o emulador se estiver em execução, compilar a aplicação, gerar um pacote zip e executar o emulador.
A partir de agora para criar uma aplicação de TV Digital é só adicionar as libs no Build Path e copiar esse script ant para que tudo seja feito automaticamente.
[...] Respostas para dúvidas de como montar o ambiente e executar a aplicação podem ser encontradas nesse site ou nesse post. [...]