Android Fat Binaries

963 views

Published on

Palestra ministrada por Felipe Pedroso no App Lab Android realizado no auditório da Intel no dia 11 de Outubro de 2013.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
963
On SlideShare
0
From Embeds
0
Number of Embeds
254
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • A quick description of the contents of the .apk file:AndroidManifest.xml – This is the AndroidManifest.xml file, in binary XML format.classes.dex – This contains the application code, compiled into the dex file format that is used by the Dalvik VM.resources.arsc – This file contains all of the precompiled resources for the application.lib – This directory holds the compiled code for each ABI. It will contain one subfolder for each ABI that was described in the previous section. In the screenshot above, the .apk in question has native libraries for both armeabi-v7a and for x86.META-INF – This directory (if present) is used to store signing information, package, and extension configuration data.res – This directory holds the resources that were not compiled into resources.arsc.
  • You maintain only one set of product details (app description, icons, screenshots, etc.). This also means youcannot charge a different price for different APKs.All users see only one version of your application on Google Play, so they are not confused by different versions you may have published that are "for tablets" or "for phones."All user reviews are applied to the same application listing, even though users on different devices may have different APKs.If you publish different APKs for different versions of Android (for different API levels), then when a user's device receives a system update that qualifies them for a different APK you've published, Google Play updates the user's application to the APK designed for the higher version of Android. Any system data associated with the application is retained (the same as with normal application updates when using a single APK).
  • Android Fat Binaries

    1. 1. Fat Binaries Felipe Pedroso Ivan Costa
    2. 2. Agenda • O que é o APK? • Como as apps são distribuídas? • Single APK e Múltiplas APKs, qual escolher? • Fat Binaries 2
    3. 3. APK • É o formato de distibuição dos aplicativos android. • Digitalmente assinado. • Baseado no formato .jar • São formatados como arquivos zip • Contém as classes compiladas(.dex), bibliotecas nativas, resources e o manifesto 3
    4. 4. A estrutura do APK • • • • • • AndroidManifest.xml classes.dex resource.arsc META-INF Res lib 4
    5. 5. Como os APKs são distribuídos? • Google Play Store • Stores independentes* • • • • Amazon SlideME F-Droid … • Instalação Manual*
    6. 6. OK, mas não é só criar o APK e subir na store? 6
    7. 7. Diferentes marcas… Relatório de fragmentação - http://opensignal.com 7
    8. 8. Diferentes dispositivos… Relatório de fragmentação - http://opensignal.com 8
    9. 9. Diferentes tamanhos de tela… Relatório de fragmentação - http://opensignal.com 9
    10. 10. … e diferentes arquiteturas! Arquitetura Compatibilidade ARM, ARM-NEON x86 MIPS Android 1.5 (API Level 3) and higher Android 2.3 (API Level 9) and higher Android 2.3 (API Level 9) and higher Referência http://developer.android.com/tools/sdk/ndk/index.html 10
    11. 11. Vantagens de suportar múltiplas arquiteturas • Melhor aproveitamento das características de cada arquitetura: • Processador • Memória • GPU • Economia de bateria • Mais dispositivos com sua app e usuário(s) feliz(es) 
    12. 12. Arquitetura Intel • Bay Trail: os novos Atoms • Intel C++ Compiler for Android • Intel Graphics Performance Analyzers e outras ferramentas • Usar emulador com HAXM para testes 12
    13. 13. Como suportar todos? • Single APK • Colocar tudo em um único APK • Simples e mais recomendado • Múltiplos APKs • Criar um APK para cada caso* • É útil quando seu app é muito grande 13
    14. 14. Múltiplos APKs • Feature do Google Play que permite que você publique diferentes APKs para diferentes configurações de dispositivo • Recomendada a utilização apenas quando o APK é maior que 50MB 14
    15. 15. Que situações posso utilizar? • Tamanho da tela e sua densidade • Versão da plataforma • Arquitetura da CPU • Formatos de compactação de texturas (OpenGL) 15
    16. 16. Suporte no Google Play • Mudar para Advanced Mode antes de fazer o upload do segundo APK • A interface não vai mudar quase nada mas se você fizer o upload de outro APK ele vai sobrescrever o primeiro. 16
    17. 17. Caso de Estudo – Multiple APKs 120 100 resources.arsc 80 classes.dex 60 AndroidManifest.xml res 40 META-INF lib 20 0 armeabi 17 armeabi-v7a mips x86
    18. 18. Single APK • Publicar diversos APKs para o mesmo app não é a regra e sim a exceção • One APK to rule them ALL! • É a solução recomendada caso sua app tenha menos de 50MB 18
    19. 19. Single APK - Vantagens • Processo de publicação e gerenciamento é mais simples • Você consegue reduzir a base de código • Existem diversas alternativas para gerenciar as mudanças entre configurações de código • Seu usuário vai conseguir restaurar as apps em diferentes devices 19
    20. 20. Fat Binary • Por definição são APKs que suportam múltiplas arquiteturas • Mas imaginem um APK com todos os tipos recursos, como ele ficaria? 20
    21. 21. Por dentro do Fat Binary libs/armeabi Source Code apk build ndk-build libs/armeabi-v7a libs/x86 21 …
    22. 22. Caso de Estudo – Single APK Size on disk 7% 2% 2% 5% 2% META-INF res AndroidManifest.xml classes.dex resources.arsc 82% 22 lib
    23. 23. Caso de Estudo – Single APK Tamanho 2% 13% 7% 2% 5% META-INF 2% res AndroidManifest.xml classes.dex 16% resources.arsc lib/armeabi lib/armeabi-v7a 40% 13% 23 lib/mips lib/x86
    24. 24. Comparando… 200 180 160 140 120 100 80 60 40 20 0 24 resources.arsc classes.dex AndroidManifest.xml res META-INF lib
    25. 25. Isso é realmente um problema? • O recomendado é que aplicações de até 50MB sejam Single APK. • Até quando vale a pena manter diferentes versões de APKs? • O que é melhor para o usuário? O que é melhor para o desenvolvimento? 25
    26. 26. Por quê não suportar diversas arquiteturas? 26
    27. 27. Take aways • Suportar diversas arquiteturas não é difícil, basta querer • Single APK x Multiples APKs: analisar o que é melhor para sua aplicação • Fat Binaries não são necessariamente ruins se tem menos de 50MB • X86: novo processador, ferramentas, compiladores e emulador 27
    28. 28. Q/A

    ×