SlideShare une entreprise Scribd logo
1  sur  29
Fat Binaries

Felipe Pedroso
Ivan Costa
Agenda
• O que é o APK?
• Como as apps são distribuídas?

• Single APK e Múltiplas APKs, qual escolher?
• Fat Binaries

2
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
3
A estrutura do APK
•
•
•
•
•
•

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

4
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
Diferentes marcas…

Relatório de fragmentação - http://opensignal.com
7
Diferentes dispositivos…

Relatório de fragmentação - http://opensignal.com
8
Diferentes tamanhos de tela…

Relatório de fragmentação - http://opensignal.com
9
… e diferentes arquiteturas!

Arquitetura

Compatibilidade

ARM, ARM-NEON
x86
MIPS

Android 1.5 (API Level 3) and higher
Android 2.3 (API Level 9) and higher
Android 2.3 (API Level 9) and higher

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

10
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) 
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

12
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

13
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

14
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)

15
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.
16
Caso de Estudo – Multiple APKs
120
100
resources.arsc

80

classes.dex
60

AndroidManifest.xml
res

40

META-INF

lib

20

0
armeabi

17

armeabi-v7a

mips

x86
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

18
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

19
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?

20
Por dentro do Fat Binary
libs/armeabi

Source Code

apk build

ndk-build
libs/armeabi-v7a

libs/x86

21

…
Caso de Estudo – Single APK
Size on disk
7%

2%

2%

5%
2%

META-INF
res
AndroidManifest.xml
classes.dex
resources.arsc

82%

22

lib
Caso de Estudo – Single APK
Tamanho
2%
13%

7%

2%

5%

META-INF
2%

res
AndroidManifest.xml
classes.dex

16%

resources.arsc
lib/armeabi
lib/armeabi-v7a

40%
13%

23

lib/mips
lib/x86
Comparando…
200
180
160
140
120
100
80
60
40
20
0

24

resources.arsc
classes.dex
AndroidManifest.xml
res
META-INF

lib
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?

25
Por quê não suportar diversas
arquiteturas?

26
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
27
Q/A
Android Fat Binaries

Contenu connexe

Tendances

Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé LeiteComo ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé LeiteTchelinux
 
Jenkins e a Integração Contínua
Jenkins e a Integração ContínuaJenkins e a Integração Contínua
Jenkins e a Integração ContínuaDenis Vieira
 
Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoFelipe
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google AndroidIury Teixeira
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação DockerAndré Justi
 
Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de VersãoJonathas Silva
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em CDiego Santos
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...Bruno Tanoue
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem PráticaEder Magalhães
 
Pesl introducao a programacao para android
Pesl   introducao a programacao para androidPesl   introducao a programacao para android
Pesl introducao a programacao para androidRegis Claus
 
Workshop on Android Rom Creation - FISTA/ISCTE 2014
Workshop on Android Rom Creation - FISTA/ISCTE 2014Workshop on Android Rom Creation - FISTA/ISCTE 2014
Workshop on Android Rom Creation - FISTA/ISCTE 2014Flávio Moringa
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascriptLaís Lima
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldMarcio Palheta
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação mavenAndré Justi
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoreRogério Moraes de Carvalho
 

Tendances (20)

Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé LeiteComo ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
Como ajudar no desenvolvimento do kernel Linux? - Fábio Olivé Leite
 
Gcc
GccGcc
Gcc
 
Svn - grupo de estudos sol7
Svn - grupo de estudos sol7Svn - grupo de estudos sol7
Svn - grupo de estudos sol7
 
Jenkins e a Integração Contínua
Jenkins e a Integração ContínuaJenkins e a Integração Contínua
Jenkins e a Integração Contínua
 
JavaFX Mobile
JavaFX MobileJavaFX Mobile
JavaFX Mobile
 
Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de código
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google Android
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Sistemas de Controle de Versão
Sistemas de Controle de VersãoSistemas de Controle de Versão
Sistemas de Controle de Versão
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em C
 
Adobe air e flex @ FUGSC
Adobe air e flex @ FUGSCAdobe air e flex @ FUGSC
Adobe air e flex @ FUGSC
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem Prática
 
Pesl introducao a programacao para android
Pesl   introducao a programacao para androidPesl   introducao a programacao para android
Pesl introducao a programacao para android
 
Workshop on Android Rom Creation - FISTA/ISCTE 2014
Workshop on Android Rom Creation - FISTA/ISCTE 2014Workshop on Android Rom Creation - FISTA/ISCTE 2014
Workshop on Android Rom Creation - FISTA/ISCTE 2014
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascript
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorld
 
Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET CoredotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
dotnetConf 2016 Goiânia: .NET Core | ASP.NET Core
 

En vedette

Produzindo Games no Brasil: Processos, Inovação e Desafios
Produzindo Games no Brasil: Processos, Inovação e DesafiosProduzindo Games no Brasil: Processos, Inovação e Desafios
Produzindo Games no Brasil: Processos, Inovação e DesafiosIntel Software Brasil
 
O uso de tecnologias Intel na implantação de sistemas de alto desempenho
O uso de tecnologias Intel na implantação de sistemas de alto desempenhoO uso de tecnologias Intel na implantação de sistemas de alto desempenho
O uso de tecnologias Intel na implantação de sistemas de alto desempenhoIntel Software Brasil
 
Utilizando os Sensores dos Ultrabooks
Utilizando os Sensores dos UltrabooksUtilizando os Sensores dos Ultrabooks
Utilizando os Sensores dos UltrabooksIntel Software Brasil
 
TDC2013 - Afinal, o que é um Community Manager?
TDC2013 - Afinal, o que é um Community Manager?TDC2013 - Afinal, o que é um Community Manager?
TDC2013 - Afinal, o que é um Community Manager?Intel Software Brasil
 
Desenvolvendo Interfaces Ricas em JavaFX para Ultrabooks
Desenvolvendo Interfaces Ricas em JavaFX para UltrabooksDesenvolvendo Interfaces Ricas em JavaFX para Ultrabooks
Desenvolvendo Interfaces Ricas em JavaFX para UltrabooksIntel Software Brasil
 
Desenvolvimento de Apps multiplataforma para dispositivos móveis com HTML5
Desenvolvimento de Apps multiplataforma para dispositivos móveis com HTML5Desenvolvimento de Apps multiplataforma para dispositivos móveis com HTML5
Desenvolvimento de Apps multiplataforma para dispositivos móveis com HTML5Intel Software Brasil
 
2012 07-13-politica-nacional-de-extensao
2012 07-13-politica-nacional-de-extensao2012 07-13-politica-nacional-de-extensao
2012 07-13-politica-nacional-de-extensaoARIANE CASSAMASSO
 
Los mejores jugadores
Los mejores jugadoresLos mejores jugadores
Los mejores jugadoresRenzo Pena
 
Como a internet funciona mayara moura
Como a internet funciona   mayara mouraComo a internet funciona   mayara moura
Como a internet funciona mayara mouraMayMoura
 
[Resumex Já Entendi] Filosofia Idade Média
[Resumex Já Entendi] Filosofia Idade Média[Resumex Já Entendi] Filosofia Idade Média
[Resumex Já Entendi] Filosofia Idade MédiaJá Entendi
 
O avestruz
O avestruzO avestruz
O avestruzczuzek
 
Relatório projeto integrado - Viciados em Tecnologia
Relatório projeto integrado - Viciados em TecnologiaRelatório projeto integrado - Viciados em Tecnologia
Relatório projeto integrado - Viciados em Tecnologialigia_mm
 

En vedette (20)

TDC-SP: Android sem gastar energia
TDC-SP: Android sem gastar energiaTDC-SP: Android sem gastar energia
TDC-SP: Android sem gastar energia
 
Produzindo Games no Brasil: Processos, Inovação e Desafios
Produzindo Games no Brasil: Processos, Inovação e DesafiosProduzindo Games no Brasil: Processos, Inovação e Desafios
Produzindo Games no Brasil: Processos, Inovação e Desafios
 
TDC: Intel Perceptual Computing SDK
TDC: Intel Perceptual Computing SDKTDC: Intel Perceptual Computing SDK
TDC: Intel Perceptual Computing SDK
 
O uso de tecnologias Intel na implantação de sistemas de alto desempenho
O uso de tecnologias Intel na implantação de sistemas de alto desempenhoO uso de tecnologias Intel na implantação de sistemas de alto desempenho
O uso de tecnologias Intel na implantação de sistemas de alto desempenho
 
Utilizando os Sensores dos Ultrabooks
Utilizando os Sensores dos UltrabooksUtilizando os Sensores dos Ultrabooks
Utilizando os Sensores dos Ultrabooks
 
TDC2013 - Afinal, o que é um Community Manager?
TDC2013 - Afinal, o que é um Community Manager?TDC2013 - Afinal, o que é um Community Manager?
TDC2013 - Afinal, o que é um Community Manager?
 
Desenvolvendo Interfaces Ricas em JavaFX para Ultrabooks
Desenvolvendo Interfaces Ricas em JavaFX para UltrabooksDesenvolvendo Interfaces Ricas em JavaFX para Ultrabooks
Desenvolvendo Interfaces Ricas em JavaFX para Ultrabooks
 
Android Native Apps Development
Android Native Apps DevelopmentAndroid Native Apps Development
Android Native Apps Development
 
Desenvolvimento de Apps multiplataforma para dispositivos móveis com HTML5
Desenvolvimento de Apps multiplataforma para dispositivos móveis com HTML5Desenvolvimento de Apps multiplataforma para dispositivos móveis com HTML5
Desenvolvimento de Apps multiplataforma para dispositivos móveis com HTML5
 
2012 07-13-politica-nacional-de-extensao
2012 07-13-politica-nacional-de-extensao2012 07-13-politica-nacional-de-extensao
2012 07-13-politica-nacional-de-extensao
 
Los mejores jugadores
Los mejores jugadoresLos mejores jugadores
Los mejores jugadores
 
Catecismo de São Pio X
Catecismo de São Pio XCatecismo de São Pio X
Catecismo de São Pio X
 
Como a internet funciona mayara moura
Como a internet funciona   mayara mouraComo a internet funciona   mayara moura
Como a internet funciona mayara moura
 
La arquitectura
La arquitecturaLa arquitectura
La arquitectura
 
Flores e mulheres
Flores e mulheresFlores e mulheres
Flores e mulheres
 
Provimento 46/2013 CGJ/ES
Provimento 46/2013 CGJ/ESProvimento 46/2013 CGJ/ES
Provimento 46/2013 CGJ/ES
 
[Resumex Já Entendi] Filosofia Idade Média
[Resumex Já Entendi] Filosofia Idade Média[Resumex Já Entendi] Filosofia Idade Média
[Resumex Já Entendi] Filosofia Idade Média
 
O avestruz
O avestruzO avestruz
O avestruz
 
Relatório projeto integrado - Viciados em Tecnologia
Relatório projeto integrado - Viciados em TecnologiaRelatório projeto integrado - Viciados em Tecnologia
Relatório projeto integrado - Viciados em Tecnologia
 
A santa ceia
A santa ceiaA santa ceia
A santa ceia
 

Similaire à Android Fat Binaries

Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017Fernando Luiz Cola
 
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDBVinicius de Sá
 
Todos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIOTodos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIOFernando Rizzato
 
1º IoT Day - O que é Linux Embarcado
1º IoT Day - O que é Linux Embarcado1º IoT Day - O que é Linux Embarcado
1º IoT Day - O que é Linux EmbarcadoDiego Sueiro
 
O novo IBM COBOL ENTERPRISE V5/V6 para zOS e o IBM ABO
O novo IBM COBOL ENTERPRISE V5/V6 para zOS e o IBM ABOO novo IBM COBOL ENTERPRISE V5/V6 para zOS e o IBM ABO
O novo IBM COBOL ENTERPRISE V5/V6 para zOS e o IBM ABOPaulo Batuta
 
Treinamento Android Nooclix
Treinamento Android NooclixTreinamento Android Nooclix
Treinamento Android NooclixIury Teixeira
 
TDC2018SP | Trilha Kotlin - Uma visao geral sobre Kotlin multiplataforma
TDC2018SP | Trilha Kotlin - Uma visao geral sobre Kotlin multiplataformaTDC2018SP | Trilha Kotlin - Uma visao geral sobre Kotlin multiplataforma
TDC2018SP | Trilha Kotlin - Uma visao geral sobre Kotlin multiplataformatdc-globalcode
 
Palestra Dispositivos Móveis
Palestra Dispositivos MóveisPalestra Dispositivos Móveis
Palestra Dispositivos MóveisGrendene S/A
 
Resumo Sessão Técnica "ArcGIS 10.1 Desktop Developer Migration Topics" do ESR...
Resumo Sessão Técnica "ArcGIS 10.1 Desktop Developer Migration Topics" do ESR...Resumo Sessão Técnica "ArcGIS 10.1 Desktop Developer Migration Topics" do ESR...
Resumo Sessão Técnica "ArcGIS 10.1 Desktop Developer Migration Topics" do ESR...Bruno Caimar
 
Entendendo a linkedição em C++
Entendendo a linkedição em C++Entendendo a linkedição em C++
Entendendo a linkedição em C++Rodrigo Strauss
 
DotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoDotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoLorival Smolski Chapuis
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao TerraformLeandro Silva
 

Similaire à Android Fat Binaries (20)

Fat binaries
Fat binariesFat binaries
Fat binaries
 
Android Open Source Project - AOSP
Android Open Source Project  - AOSPAndroid Open Source Project  - AOSP
Android Open Source Project - AOSP
 
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
 
Linux Raspberry Pi
Linux Raspberry PiLinux Raspberry Pi
Linux Raspberry Pi
 
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
 
10-codigo-limpo-parte-3.pdf
10-codigo-limpo-parte-3.pdf10-codigo-limpo-parte-3.pdf
10-codigo-limpo-parte-3.pdf
 
Smaller apk
Smaller apkSmaller apk
Smaller apk
 
Todos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIOTodos os recursos do RAD Studio 10.3 RIO
Todos os recursos do RAD Studio 10.3 RIO
 
O Futuro do ASP.NET (vNext)
O Futuro do ASP.NET (vNext)O Futuro do ASP.NET (vNext)
O Futuro do ASP.NET (vNext)
 
1º IoT Day - O que é Linux Embarcado
1º IoT Day - O que é Linux Embarcado1º IoT Day - O que é Linux Embarcado
1º IoT Day - O que é Linux Embarcado
 
O novo IBM COBOL ENTERPRISE V5/V6 para zOS e o IBM ABO
O novo IBM COBOL ENTERPRISE V5/V6 para zOS e o IBM ABOO novo IBM COBOL ENTERPRISE V5/V6 para zOS e o IBM ABO
O novo IBM COBOL ENTERPRISE V5/V6 para zOS e o IBM ABO
 
Treinamento Android Nooclix
Treinamento Android NooclixTreinamento Android Nooclix
Treinamento Android Nooclix
 
TDC2018SP | Trilha Kotlin - Uma visao geral sobre Kotlin multiplataforma
TDC2018SP | Trilha Kotlin - Uma visao geral sobre Kotlin multiplataformaTDC2018SP | Trilha Kotlin - Uma visao geral sobre Kotlin multiplataforma
TDC2018SP | Trilha Kotlin - Uma visao geral sobre Kotlin multiplataforma
 
Palestra Dispositivos Móveis
Palestra Dispositivos MóveisPalestra Dispositivos Móveis
Palestra Dispositivos Móveis
 
Setup.docx
Setup.docxSetup.docx
Setup.docx
 
Resumo Sessão Técnica "ArcGIS 10.1 Desktop Developer Migration Topics" do ESR...
Resumo Sessão Técnica "ArcGIS 10.1 Desktop Developer Migration Topics" do ESR...Resumo Sessão Técnica "ArcGIS 10.1 Desktop Developer Migration Topics" do ESR...
Resumo Sessão Técnica "ArcGIS 10.1 Desktop Developer Migration Topics" do ESR...
 
Csharp
CsharpCsharp
Csharp
 
Entendendo a linkedição em C++
Entendendo a linkedição em C++Entendendo a linkedição em C++
Entendendo a linkedição em C++
 
DotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoDotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - Introdução
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 

Plus de Intel Software Brasil

Modernização de código em Xeon® e Xeon Phi™
Modernização de código em Xeon® e Xeon Phi™  Modernização de código em Xeon® e Xeon Phi™
Modernização de código em Xeon® e Xeon Phi™ Intel Software Brasil
 
Escreva sua App sem gastar energia, agora no KitKat
Escreva sua App sem gastar energia, agora no KitKatEscreva sua App sem gastar energia, agora no KitKat
Escreva sua App sem gastar energia, agora no KitKatIntel Software Brasil
 
Desafios do Desenvolvimento Multiplataforma
Desafios do Desenvolvimento MultiplataformaDesafios do Desenvolvimento Multiplataforma
Desafios do Desenvolvimento MultiplataformaIntel Software Brasil
 
Desafios do Desenvolvimento Multi-plataforma
Desafios do Desenvolvimento Multi-plataformaDesafios do Desenvolvimento Multi-plataforma
Desafios do Desenvolvimento Multi-plataformaIntel Software Brasil
 
Getting the maximum performance in distributed clusters Intel Cluster Studio XE
Getting the maximum performance in distributed clusters Intel Cluster Studio XEGetting the maximum performance in distributed clusters Intel Cluster Studio XE
Getting the maximum performance in distributed clusters Intel Cluster Studio XEIntel Software Brasil
 
Methods and practices to analyze the performance of your application with Int...
Methods and practices to analyze the performance of your application with Int...Methods and practices to analyze the performance of your application with Int...
Methods and practices to analyze the performance of your application with Int...Intel Software Brasil
 
Principais conceitos técnicas e modelos de programação paralela
Principais conceitos técnicas e modelos de programação paralelaPrincipais conceitos técnicas e modelos de programação paralela
Principais conceitos técnicas e modelos de programação paralelaIntel Software Brasil
 
Principais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoPrincipais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoIntel Software Brasil
 
Intel Technologies for High Performance Computing
Intel Technologies for High Performance ComputingIntel Technologies for High Performance Computing
Intel Technologies for High Performance ComputingIntel Software Brasil
 
Benchmarking para sistemas de alto desempenho
Benchmarking para sistemas de alto desempenhoBenchmarking para sistemas de alto desempenho
Benchmarking para sistemas de alto desempenhoIntel Software Brasil
 
Yocto no 1 IoT Day da Telefonica/Vivo
Yocto no 1 IoT Day da Telefonica/VivoYocto no 1 IoT Day da Telefonica/Vivo
Yocto no 1 IoT Day da Telefonica/VivoIntel Software Brasil
 
Otávio Salvador - Yocto project reduzindo -time to market- do seu próximo pr...
Otávio Salvador - Yocto project  reduzindo -time to market- do seu próximo pr...Otávio Salvador - Yocto project  reduzindo -time to market- do seu próximo pr...
Otávio Salvador - Yocto project reduzindo -time to market- do seu próximo pr...Intel Software Brasil
 
Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5
Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5
Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5Intel Software Brasil
 

Plus de Intel Software Brasil (20)

Modernização de código em Xeon® e Xeon Phi™
Modernização de código em Xeon® e Xeon Phi™  Modernização de código em Xeon® e Xeon Phi™
Modernização de código em Xeon® e Xeon Phi™
 
Escreva sua App sem gastar energia, agora no KitKat
Escreva sua App sem gastar energia, agora no KitKatEscreva sua App sem gastar energia, agora no KitKat
Escreva sua App sem gastar energia, agora no KitKat
 
Desafios do Desenvolvimento Multiplataforma
Desafios do Desenvolvimento MultiplataformaDesafios do Desenvolvimento Multiplataforma
Desafios do Desenvolvimento Multiplataforma
 
Desafios do Desenvolvimento Multi-plataforma
Desafios do Desenvolvimento Multi-plataformaDesafios do Desenvolvimento Multi-plataforma
Desafios do Desenvolvimento Multi-plataforma
 
Yocto - 7 masters
Yocto - 7 mastersYocto - 7 masters
Yocto - 7 masters
 
Getting the maximum performance in distributed clusters Intel Cluster Studio XE
Getting the maximum performance in distributed clusters Intel Cluster Studio XEGetting the maximum performance in distributed clusters Intel Cluster Studio XE
Getting the maximum performance in distributed clusters Intel Cluster Studio XE
 
Intel tools to optimize HPC systems
Intel tools to optimize HPC systemsIntel tools to optimize HPC systems
Intel tools to optimize HPC systems
 
Methods and practices to analyze the performance of your application with Int...
Methods and practices to analyze the performance of your application with Int...Methods and practices to analyze the performance of your application with Int...
Methods and practices to analyze the performance of your application with Int...
 
Principais conceitos técnicas e modelos de programação paralela
Principais conceitos técnicas e modelos de programação paralelaPrincipais conceitos técnicas e modelos de programação paralela
Principais conceitos técnicas e modelos de programação paralela
 
Principais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoPrincipais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorização
 
Notes on NUMA architecture
Notes on NUMA architectureNotes on NUMA architecture
Notes on NUMA architecture
 
Intel Technologies for High Performance Computing
Intel Technologies for High Performance ComputingIntel Technologies for High Performance Computing
Intel Technologies for High Performance Computing
 
Benchmarking para sistemas de alto desempenho
Benchmarking para sistemas de alto desempenhoBenchmarking para sistemas de alto desempenho
Benchmarking para sistemas de alto desempenho
 
Yocto no 1 IoT Day da Telefonica/Vivo
Yocto no 1 IoT Day da Telefonica/VivoYocto no 1 IoT Day da Telefonica/Vivo
Yocto no 1 IoT Day da Telefonica/Vivo
 
Html5 fisl15
Html5 fisl15Html5 fisl15
Html5 fisl15
 
IoT FISL15
IoT FISL15IoT FISL15
IoT FISL15
 
IoT TDC Floripa 2014
IoT TDC Floripa 2014IoT TDC Floripa 2014
IoT TDC Floripa 2014
 
Otávio Salvador - Yocto project reduzindo -time to market- do seu próximo pr...
Otávio Salvador - Yocto project  reduzindo -time to market- do seu próximo pr...Otávio Salvador - Yocto project  reduzindo -time to market- do seu próximo pr...
Otávio Salvador - Yocto project reduzindo -time to market- do seu próximo pr...
 
Html5 tdc floripa_2014
Html5 tdc floripa_2014Html5 tdc floripa_2014
Html5 tdc floripa_2014
 
Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5
Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5
Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5
 

Android Fat Binaries

  • 2. 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 3
  • 4. A estrutura do APK • • • • • • AndroidManifest.xml classes.dex resource.arsc META-INF Res lib 4
  • 5. Como os APKs são distribuídos? • Google Play Store • Stores independentes* • • • • Amazon SlideME F-Droid … • Instalação Manual*
  • 6. OK, mas não é só criar o APK e subir na store? 6
  • 7. Diferentes marcas… Relatório de fragmentação - http://opensignal.com 7
  • 8. Diferentes dispositivos… Relatório de fragmentação - http://opensignal.com 8
  • 9. Diferentes tamanhos de tela… Relatório de fragmentação - http://opensignal.com 9
  • 10. … e diferentes arquiteturas! Arquitetura Compatibilidade ARM, ARM-NEON x86 MIPS Android 1.5 (API Level 3) and higher Android 2.3 (API Level 9) and higher Android 2.3 (API Level 9) and higher Referência http://developer.android.com/tools/sdk/ndk/index.html 10
  • 11. 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 12
  • 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 13
  • 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 14
  • 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) 15
  • 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. 16
  • 17. Caso de Estudo – Multiple APKs 120 100 resources.arsc 80 classes.dex 60 AndroidManifest.xml res 40 META-INF lib 20 0 armeabi 17 armeabi-v7a mips x86
  • 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 18
  • 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 19
  • 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? 20
  • 21. Por dentro do Fat Binary libs/armeabi Source Code apk build ndk-build libs/armeabi-v7a libs/x86 21 …
  • 22. Caso de Estudo – Single APK Size on disk 7% 2% 2% 5% 2% META-INF res AndroidManifest.xml classes.dex resources.arsc 82% 22 lib
  • 23. Caso de Estudo – Single APK Tamanho 2% 13% 7% 2% 5% META-INF 2% res AndroidManifest.xml classes.dex 16% resources.arsc lib/armeabi lib/armeabi-v7a 40% 13% 23 lib/mips lib/x86
  • 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? 25
  • 26. 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 27
  • 28. Q/A

Notes de l'éditeur

  1. A quick description of the contents of the .apk file:AndroidManifest.xml – This is the AndroidManifest.xml file, in binary XML format.classes.dex – This contains the application code, compiled into the dex file format that is used by the Dalvik VM.resources.arsc – This file contains all of the precompiled resources for the application.lib – This directory holds the compiled code for each ABI. It will contain one subfolder for each ABI that was described in the previous section. In the screenshot above, the .apk in question has native libraries for both armeabi-v7a and for x86.META-INF – This directory (if present) is used to store signing information, package, and extension configuration data.res – This directory holds the resources that were not compiled into resources.arsc.
  2. You maintain only one set of product details (app description, icons, screenshots, etc.). This also means youcannot charge a different price for different APKs.All users see only one version of your application on Google Play, so they are not confused by different versions you may have published that are "for tablets" or "for phones."All user reviews are applied to the same application listing, even though users on different devices may have different APKs.If you publish different APKs for different versions of Android (for different API levels), then when a user's device receives a system update that qualifies them for a different APK you've published, Google Play updates the user's application to the APK designed for the higher version of Android. Any system data associated with the application is retained (the same as with normal application updates when using a single APK).