segunda-feira, setembro 10, 2012

Desenvolvendo para Android: O Ambiente (cont)

Continuando os comentários sobre o ambiente de desenvolvimento para Android, algumas observações que esqueci no post anterior e um pouco sobre o SDK e o emulador;

Java

Um ponto que eu esqueci de falar na parte anterior é que, embora a linguagem usada pelo Android seja Java, o código não roda em uma JVM. O bytecode Java é convertido para rodar em um outro tipo de máquina virtual - a Dalvik. Até hoje isto não teve nenhuma implicação prática para mim.

Eclipse

Uma coisa que me irrita é que quando você abre ou seleciona um arquivo no "package explorer",  o ajuste da tela ao tipo do arquivo move para cima ou para baixo a janela do "package explorer", o que às vezes faz o Eclipse achar que você está arrastando o arquivo para outro lugar.

SDK

Quando você faz o download do SDK do Android, apenas as ferramentas básicas (Android SDK Tools) são trazidas. Você precisa baixar depois o "Android SDK Plataform Tools" e os arquivos específicos (documentação, bibliotecas, exemplos e imagem para o emulador) para as versões que você pretende suportar. Se prepare para um longo download, que irá se repetir quando sair uma atualização ou você desejar suportar mais alguma versão.

Emulador

Um dos pontos altos do desenvolvimento para o PalmOS era o emulador (o POSE). Originalmente feito por um entusiasta, foi depois adotado pela Palm. Eu lembro de ter uma a uma convenção da Palm e, durante uma palestra específica sobre o POSE, o palestrante indicou o autor na plateia. O rapaz foi aplaudido de pé.

A reação para o autor do emulador de dispositivos Android seria  bem diferente. Em parte isto se justifica pelo fato dos dispositivos Android terem processadores rápidos (era muito mais fácil emular um Dragonball trotando a 8MHz num micro de 15 anos atrás), mas o emulador do Android é realmente irritante. Além de demorar uma eternidade para abrir, ele às vezes só entra na segunda ou terceira tentativa. Dá para se virar emulando smartphones com resolução baixa e média, mas emular um tablet só em micros bem poderosos.  Existem algumas versões aceleradas do emulador, mas para equipamentos específicos.

 O emulador tem também algumas esquisitices, como o mapeamento padrão das teclas.

O jeito é habilitar a função de depuração no dispositivo, achar os drivers necessários e conectar ao PC de desenvolvimento. Um dos problemas com os drivers é que alguns fabricantes não tem um dowload enxuto, é preciso baixar (e instalar) dezenas de megabytes de software que você não vai usar.

Um comentário:

Xicão de Andrade disse...

O google devia adotar uma solução parecida com a da Apple, a de ter um simulador. Tudo pode ser testado de forma rápida e de certa forma fiel ao celular. Nas minhas aplicações para iOS testo com segurança tudo no simulador. Obviamente um simulador muitas vezes não se depara com algum erro no gerenciamento de memória, mas nada como um teste posterior no dispositivo, não atrapalhando o fluxo do desenvolvimento. No android é obrigatório ter um celular para teste e com um agravante, ter diversos celulares para teste :( devido a fragmentação absurda de hardware. O emulador do android melhorou muito(acredite) ao dar suporte a GPU nas últimas atualizações, mas ainda esta muito longe do ideal. Até então era impossível testar aplicações com OpenGLes 2.0. Obs: Tente verificar se você ligou a opção de aceleração por GPU no emu do android, em aplicações normais chega a ter uma velocidade razoável.