Android Fat Binaries

Preview:

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