android fat binaries

29
Fat Binaries Felipe Pedroso Ivan Costa

Upload: intel-software-brasil

Post on 24-May-2015

569 views

Category:

Technology


3 download

DESCRIPTION

Palestra ministrada por Felipe Pedroso no App Lab Android realizado no auditório da Intel no dia 11 de Outubro de 2013.

TRANSCRIPT

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