29
Fat Binaries Felipe Pedroso Ivan Costa

Android Fat Binaries

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

Page 1: Android Fat Binaries

Fat Binaries

Felipe PedrosoIvan Costa

Page 2: Android Fat Binaries

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

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

4

A estrutura do APK

• AndroidManifest.xml• classes.dex• resource.arsc• META-INF• Res• lib

Page 5: Android Fat Binaries

Como os APKs são distribuídos?

• Google Play Store

• Stores independentes*• Amazon • SlideME• F-Droid• …

• Instalação Manual*

Page 6: Android Fat Binaries

OK, mas não é só criar o APK e subir na store?

6

Page 7: Android Fat Binaries

7

Diferentes marcas…

Relatório de fragmentação - http://opensignal.com

Page 8: Android Fat Binaries

8

Diferentes dispositivos…

Relatório de fragmentação - http://opensignal.com

Page 9: Android Fat Binaries

9

Diferentes tamanhos de tela…

Relatório de fragmentação - http://opensignal.com

Page 10: Android Fat Binaries

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

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

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

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

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

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

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

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

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

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

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

21

Por dentro do Fat Binary

Source Code

libs/armeabi-v7a

libs/x86

libs/armeabi

ndk-build apk build

Page 22: Android Fat Binaries

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

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

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

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

Por quê não suportar diversas arquiteturas?

26

Page 27: Android Fat Binaries

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

Q/A

Page 29: Android Fat Binaries