Upload
intel-software-brasil
View
569
Download
3
Embed Size (px)
DESCRIPTION
Palestra ministrada por Felipe Pedroso no App Lab Android realizado no auditório da Intel no dia 11 de Outubro de 2013.
Citation preview
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