Android Fat Binaries
-
Upload
intel-software-brasil -
Category
Technology
-
view
567 -
download
3
description
Transcript of Android Fat Binaries
![Page 1: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/1.jpg)
Fat Binaries
Felipe PedrosoIvan Costa
![Page 2: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/2.jpg)
Agenda
• O que é o APK?
• Como as apps são distribuídas?
• Single APK e Múltiplas APKs, qual escolher?
• Fat Binaries
2
![Page 3: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/3.jpg)
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
![Page 4: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/4.jpg)
4
A estrutura do APK
• AndroidManifest.xml• classes.dex• resource.arsc• META-INF• Res• lib
![Page 5: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/5.jpg)
Como os APKs são distribuídos?
• Google Play Store
• Stores independentes*• Amazon • SlideME• F-Droid• …
• Instalação Manual*
![Page 6: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/6.jpg)
OK, mas não é só criar o APK e subir na store?
6
![Page 7: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/7.jpg)
7
Diferentes marcas…
Relatório de fragmentação - http://opensignal.com
![Page 8: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/8.jpg)
8
Diferentes dispositivos…
Relatório de fragmentação - http://opensignal.com
![Page 9: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/9.jpg)
9
Diferentes tamanhos de tela…
Relatório de fragmentação - http://opensignal.com
![Page 10: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/10.jpg)
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
![Page 11: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/11.jpg)
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)
![Page 12: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/12.jpg)
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
![Page 13: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/13.jpg)
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
![Page 14: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/14.jpg)
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
![Page 15: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/15.jpg)
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)
![Page 16: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/16.jpg)
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.
![Page 17: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/17.jpg)
17
Caso de Estudo – Multiple APKs
armeabi armeabi-v7a mips x860
20
40
60
80
100
120
resources.arscclasses.dexAndroidManifest.xmlresMETA-INFlib
![Page 18: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/18.jpg)
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
![Page 19: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/19.jpg)
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
![Page 20: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/20.jpg)
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?
![Page 21: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/21.jpg)
21
Por dentro do Fat Binary
Source Code
libs/armeabi-v7a
libs/x86
libs/armeabi
ndk-build apk build
…
![Page 22: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/22.jpg)
22
Caso de Estudo – Single APK
7%2%
2%
4% 2%
82%
Size on disk
META-INFresAndroidManifest.xmlclasses.dexresources.arsclib
![Page 23: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/23.jpg)
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
![Page 24: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/24.jpg)
24
Comparando…
armeabi armeabi-v7a mips x86 Fat Binary0
20
40
60
80
100
120
140
160
180
200
resources.arscclasses.dexAndroidManifest.xmlresMETA-INFlib
![Page 25: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/25.jpg)
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?
![Page 26: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/26.jpg)
Por quê não suportar diversas arquiteturas?
26
![Page 27: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/27.jpg)
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
![Page 28: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/28.jpg)
Q/A
![Page 29: Android Fat Binaries](https://reader035.fdocument.pub/reader035/viewer/2022062220/5560b5a0d8b42afe3b8b49b6/html5/thumbnails/29.jpg)