Android Fat Binaries

Post on 24-May-2015

567 views 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 of Android Fat Binaries

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