android fat binaries
Post on 24-May-2015
571 Views
Preview:
DESCRIPTION
TRANSCRIPT
Fat Binaries
Felipe PedrosoIvan Costa
Agenda
• O que é o APK?
• Como as apps são distribuídas?
• Single APK e Múltiplas APKs, qual escolher?
• Fat Binaries
2
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
4
A estrutura do APK
• AndroidManifest.xml• classes.dex• resource.arsc• META-INF• Res• lib
Como os APKs são distribuídos?
• Google Play Store
• Stores independentes*• Amazon • SlideME• F-Droid• …
• Instalação Manual*
OK, mas não é só criar o APK e subir na store?
6
7
Diferentes marcas…
Relatório de fragmentação - http://opensignal.com
8
Diferentes dispositivos…
Relatório de fragmentação - http://opensignal.com
9
Diferentes tamanhos de tela…
Relatório de fragmentação - http://opensignal.com
10
… e diferentes arquiteturas!
Arquitetura CompatibilidadeARM, ARM-NEON Android 1.5 (API Level 3) and higherx86 Android 2.3 (API Level 9) and higherMIPS Android 2.3 (API Level 9) and higher
Referênciahttp://developer.android.com/tools/sdk/ndk/index.html
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
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
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
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
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)
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.
17
Caso de Estudo – Multiple APKs
armeabi armeabi-v7a mips x860
20
40
60
80
100
120
resources.arscclasses.dexAndroidManifest.xmlresMETA-INFlib
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
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
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?
21
Por dentro do Fat Binary
Source Code
libs/armeabi-v7a
libs/x86
libs/armeabi
ndk-build apk build
…
22
Caso de Estudo – Single APK
7%2%
2%
4% 2%
82%
Size on disk
META-INFresAndroidManifest.xmlclasses.dexresources.arsclib
23
Caso de Estudo – Single APK
7%2%
2%
4% 2%
16%
13%
40%
13%
Tamanho
META-INFresAndroidManifest.xmlclasses.dexresources.arsclib/armeabilib/armeabi-v7alib/mipslib/x86
24
Comparando…
armeabi armeabi-v7a mips x86 Fat Binary0
20
40
60
80
100
120
140
160
180
200
resources.arscclasses.dexAndroidManifest.xmlresMETA-INFlib
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?
Por quê não suportar diversas arquiteturas?
26
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
Q/A
top related