Desenvolvimento Android com Maven + ActionBarSherlock 4

Estes últimos dias, estou tentando retomar o projeto do aplicativo da Revista Espírito Livre para Android. A primeira versão que desenvolvi foi bem simples, mas serviu para me dar uma boa visão sobre os rumos da plataforma e me incentivou a estudar bastante. Com isso, vi que dava para melhorar o aplicativo em vários pontos e que a melhor opção seria começar uma nova versão do zero.

Uma das minhas ideias para esta nova versão era começar a utilizar o Maven para gerenciar as dependências do aplicativo. Quem conhece a ferramenta, sabe que ela oferece diversos benefícios como, por exemplo, o build independente de IDE e eliminar a necessidade de versionar os binários das APIs dependentes.

Maven no Android

Comecei a pesquisar e encontrei o android-maven-plugin. Este plugin adiciona ao ciclo de vida do Maven as especificidades da compilação de um projeto Android.

Além disso, existem arquétipos (archetypes) que criam a estrutura de diretórios e arquivos básicos de qualquer projeto Android, além de já incluir no pom.xml o android-maven-plugin configurado com a versão desejada do Android. O arquétipo que mais me interessou foi o “android-release” que, além do projeto principal, cria um projeto de testes e configura o projeto para gerar um pacote para distribuição.

Maven + Android + Eclipse

Com o projeto Maven pronto, já dá para compilar e gerar um pacote da aplicação pela linha de comando. No entanto, apesar do Eclipse (a partir da versão 3.7 “Indigo”) suportar projetos Maven nativamente, ao tentar importar o projeto, ele apresentará um erro.

Assim como Maven precisa de um plugin para lidar com as especificidades da compilação para Android, o Eclipse também precisa. O ADT por si só não consegue lidar com o projeto, pois ele não espera um projeto no formato Maven.

Mas para configurar é muito fácil. Considerando que está utilizando a versão 3.7, você deverá utilizar o plugin m2e-android. Para instalá-lo é bem simples e está explicado em sua página.

Atenção: Não confundir este com o “m2eclipse-android-integration”, que é a versão antiga do m2e-android. Parece bobeira, mas eu bati muito a cabeça com isso!

ActionBarSherlock 4

Superados os problemas do Maven e sua integração com o Eclipse, chegou a hora de incluir no projeto o ActionBarSherlock, componente que já mencionei num post anterior. Como estava desenvolvendo uma versão nova do aplicativo, também decidi atualizar a biblioteca para a versão 4.0. No entanto, ao incluí-la no projeto, tive um erro.

Infelizmente, documentação não é o forte do componente e, depois de bater muito a cabeça, descobri que a versão nova exige que a compilação seja feita para Android 4 (e não para Android 3, como a versão antiga). Sendo assim, você deve configurar seu projeto para o API level 15 e a versão do Android 4.0.1.2.

Além disso, tentei rodar a aplicação num emulador rodando Android 1.6 (versão mínima compatível na versão 3.0) e tive outro erro. Também depois de perder algum tempo, descobri que a versão agora só suportava versões do Android a partir da 2.1.

Conclusão

Apesar destes problemas, vale muito a pena utilizar o Maven nos projetos. Eu bati muito a cabeça, mas espero que este artigo te ajude a evitar estes problemas e que consiga utilizar a ferramenta muito mais tranquilamente.

Uma última dica para quem utiliza o ActionBarSherlock, é utilizar o arquétipo Maven para gerar o projeto e, durante a geração, escolher a API level 15. Você deve tomar cuidado que o padrão é a API level 10, mas você pode negar esta escolha e forçar a versão desejada.

Por fim, torço muito para que o ambiente Maven para Android seja cada vez mais utilizado e fique cada vez mais estável e fácil de usar.