Fat binaries

27
Fat Binaries Felipe Pedroso

description

Palestra sobre Fat Binaries apresentada durante o 7 masters

Transcript of Fat binaries

Page 1: Fat binaries

Fat Binaries

Felipe Pedroso

Page 2: Fat binaries

APK

• É o formato de distibuição dos aplicativos Android*.

• Digitalmente assinado.

• Baseado no formato .jar

• São formatados como arquivos zip

2

Page 3: Fat binaries

A estrutura do APK

• AndroidManifest.xml

• classes.dex

• resource.arsc

• META-INF

• Res

• lib

(bibliotecas nativas)

3

Page 4: Fat binaries

Como os APKs são distribuídos?

• Google Play Store

• Stores independentes* • Amazon

• SlideME

• F-Droid

• …

• Instalação Manual*

Page 5: Fat binaries

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

5

Page 6: Fat binaries

Diferentes marcas…

6

Referência (Julho/2013): http://opensignal.com

Page 7: Fat binaries

Diferentes dispositivos…

7

Referência (Julho/2013): http://opensignal.com

Page 8: Fat binaries

Diferentes tamanhos de tela…

8

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

Page 10: Fat binaries

… e diferentes arquiteturas!

Arquitetura Compatibilidade

ARM, ARM-NEON Android 1.5 (API Level 3) and higher

x86 Android 2.3 (API Level 9) and higher

MIPS Android 2.3 (API Level 9) and higher

10

Referência http://developer.android.com/tools/sdk/ndk/index.html

Page 11: Fat binaries

Vantagens de suportar múltiplas configurações

• Melhor aproveitamento das características de cada dispositivo: • Processador • Memória • GPU • Tela

• Economia de bateria

• Usuários felizes

• Mais dispositivos com sua app

Page 12: Fat binaries

Como suportar todos?

• Single APK • Tudo em um único APK

• Simples e mais recomendado

•Múltiplos APKs • Um APK para cada caso

• Recomendado quando seu app é muito grande (>50MB)

12

Page 13: Fat binaries

Múltiplos APKS

• Tamanho da tela e sua densidade

• Versão da plataforma (API)

• Arquitetura da CPU

• Formatos de compactação de texturas (OpenGL)

13

Page 14: Fat binaries

Múltiplos APKs no Google Play

• Modo Advanced do Console do Desenvolvedor

• Interface similar

• Não sobrescreve o APK anterior

14

Page 15: Fat binaries

Caso de Estudo – Multiple APKs

15

0

20

40

60

80

100

120

armeabiarmeabi-v7amips x86

resources.arsc

lib

classes.dex

AndroidManifest.xml

res

META-INF

Page 16: Fat binaries

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 e também a mais simples

16

Page 17: Fat binaries

Por que Single APK?

• Publicação e gerenciamento mais simples

• Código unificado (build mais simples)

• Fácil gerenciamento de múltiplas configurações

• Backup de aplicativos entre dispositivos

17

Page 18: Fat binaries

Fat Binary

• Suportam múltiplas arquiteturas...

• … mas imagine um Single APK para todas configurações possíveis!

18

Page 19: Fat binaries

Caso de Estudo – Single APK

7% 2%

2%

5% 2%

82%

Size on disk

META-INF

res

AndroidManifest.xml

classes.dex

resources.arsc

lib

19

Page 20: Fat binaries

Caso de Estudo – Single APK

20

7% 2%

2%

5% 2%

16%

13%

40%

13%

Size on disk

META-INF

res

AndroidManifest.xml

classes.dex

resources.arsc

lib/armeabi

lib/armeabi-v7a

lib/mips

lib/x86

Page 21: Fat binaries

Comparando…

21

0

20

40

60

80

100

120

140

160

180

200

resources.arsc

classes.dex

AndroidManifest.xml

res

META-INF

lib

Page 22: Fat binaries

Isso é realmente um problema?

• O recomendado é que aplicações de até 50MB sejam Single APK.

• Até quando vale a pena manter diferentes versões?

• O que é melhor para o usuário? O que é melhor para o desenvolvimento?

22

Page 23: Fat binaries

Take aways

• Consciência sobre variações de configurações

• Conheça seu usuário e suas limitações

• Single APK x Multiples APKs: equilíbrio de vantagens e desvantagens

23

Page 24: Fat binaries

Contatos

• Felipe Pedroso • [email protected]

• @felipeapedroso

• facebook.com/felipe.a.pedroso

Page 25: Fat binaries

Muito obrigado!

Page 26: Fat binaries

Q/A

Page 27: Fat binaries