Muito se fala da plataforma Android, como por exemplo, seus excelentes aspectos de estabilidade e performance. O que poucos sabem é que a receita do sucesso é não apenas 1 estratégia que deu certo e sim várias. Seja na escolha de um kernel exemplar (Linux) ou ainda na linguagem (Java), a plataforma agrega ainda uma maneira bem “Java de Ser” de empacotar seus aplicativos, o formato “APK”.
Assim como arquivos Jar os arquivos APK(Android Application Package) seguem o formato ZIP, ou seja, basta descompactar o arquivo em uma ferramenta de descompressão que sua estrutura é revelada e, ainda detalhes interessantíssimos da estratégia dos engenheiros da Google.
Ao descompactar o arquivo, você verá a seguinte estrutura :
MyAppication
assets/
META-INF/
res/
AndroidManifest
classes.dex
resouces.arsc
A pasta assets, contém arquivos que normalmente são de escolha do desenvolvedor e isso vai desde um arquivo .sql até mesmo fontes que são usadas pela aplicação.
A pasta META-INF já é bastante conhecida pela comunidade java, nela é possivel encontrar informações sobre a assinatura e certificado utilizado na geração do apk e o famoso MANIFEST.MF com detalhes sobre a aplicação em si.
A pasta res contém os recursos utilizados pela aplicação, tais como: Strings, Arquivos de Layout, Folhas de estilo e etc.
O arquivo de formato xml : AndroidManifest, contém informações importantíssimas para o funcionamento de uma aplicação Android, tais como: declaração de Activities, Temas da aplicação, Permissões especiais, versão da aplicação e etc.
O arquivo classes.dex contém as classes compiladas no formato dex, que somente podem ser executadas pela Dalvik, ou seja, não adianta tentar rodar um .dex com a Java Runtime Environment que não funciona.
O arquivo resources.arsc é um binário dos recursos da aplicação gerado apos a compilação.
No geral, o formato acima pode variar, mas a sua essência e a mesma. E por último, vale lembrar que as aplicações embbebed do android ficam localizadas na pasta /system/app já as que você instala ficam na pasta /data/app.
Esse post foi apenas um pequeno bate-bola sobre Android, nada muito avançado, mas é claro, nem por isso deixa de ser útil.
Abrcs e até a proxima o/
Natanael Fonseca