SlideShare uma empresa Scribd logo
1 de 33
#Otimizando o APK
Menor e melhor.
Qual o tamanho do seu
aplicativo?
● Quanto espaço ele ocupa
quando é instalado?
● Quantos dados ele consome?
● Quanto ele utiliza de memória?
O que é um APK?
O que é um APK?
classes.dex res/ resources.arsc
AndroidManifest.xml libs/ assets/
META-INF/
Comprimindo o APK do Lolo
Antes:
APK: 7.0MB
Espaço em disco: 9.79MB
Depois:
APK: ~2.0MB
Espaço em disco: ~2.5MB
Comprimindo o APK do Lolo
1- Minify, Proguard*, ShrinkResources
2- Limpando dependências
3- Filtrando resources
4- Otimizando Imagens
5- Vector Drawables
Minify, Proguard*, ShrinkResources
Comprimindo o APK do Lolo
1- Minify, Proguard*, ShrinkResources
APK: 3.4MB
Espaço em disco: 4.21MB
APK: 7.0MB
Espaço em disco: 9.79MB
zipAlignEnabled true
minifyEnabled false
signingConfig signingConfigs.release
Limpando Dependências
Comprimindo o APK do Lolo
2- Limpando dependências
APK: 3.3MB
Espaço em disco: 4.00MB
APK: 3.4MB
Espaço em disco: 4.21MB
Filtrando Resources
Comprimindo o APK do Lolo
3- Filtrando resources
APK: 3.2MB
Espaço em disco: 3.98MB
APK: 3.3MB
Espaço em disco: 4.0MB
shrinkResources true
resConfigs “en”, “fr”
* ArscBlamer
https://github.com/google/android-arscblamer
Otimizando Imagens
Comprimindo o APK do Lolo
4- Otimizando Imagens
APK: 2.2MB
Espaço em disco: 2.61MB
APK: 3.3MB
Espaço em disco: 4.0MB
* Png Compress
https://tinypng.com/
* Jpeg Mini
http://www.jpegmini.com/
* Não usem o Zopfli para comprimir o APK!!
* Desativem  Cruncher do AAPT
Vector Drawable
Comprimindo o APK do Lolo
5- Otimizando Imagens
APK: 1.98MB
Espaço em disco: 2.42MB
APK: 2.2MB
Espaço em disco: 2.71MB
* Habilitar no build.gradle
vectorDrawables.useSupportLibrary = true
* Utilizar sempre appCompat
app:srcCompat
* Não esquecer de habilitar nos Fragment’s/Activity’s
static {
AppCompatDelegate.setCompatVectorFromSourcesEnabled(true);
}
* Sempre que utilizar em drawableLeft/Top/Right/Left
<selector xmlns:android="...">
<item android:state_checked="true"
android:drawable="@drawable/checked_icon" />
<item android:drawable="@drawable/icon" />
</selector>
Splits
Redex
• Redex é um bytecode (dex) otimizador Android desenvolvido originalmente no
Facebook. 
• Ele fornece um quadro de leitura, escrita e análise DEX arquivos, e um conjunto de
otimização passa que o uso dessa estrutura para melhorar a bytecode. 
• APK otimizado por Redex deve ser menor e mais rápido do que sua fonte.
• Melhora cerca de 25% melhor na inicialização.
https://github.com/facebook/redex
Agradecimentos/Link’s:
* Matheus Corregiari
* Wojtek Kalicinski
https://medium.com/google-developers/smallerapk-part-1-anatomy-of-an-
apk-da83c25e7003#.u1v3o93vm
* Chris Banes
https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-
91cbafa87c88#.jcqmhxgxw
www.concretesolutions.com.br
Rio de Janeiro – Rua São José, 90 – cj. 2121
Centro – (21) 2240-2030
São Paulo - Rua Sansão Alves dos Santos, 433
4º andar - Brooklin - (11) 4119-0449
Ajudamos empresas a criar
produtos digitais de sucesso

Mais conteúdo relacionado

Destaque

আজ আপনি প্রিয় কাউকে জড়িয়ে ধরেছেন তো
আজ আপনি প্রিয় কাউকে জড়িয়ে ধরেছেন তোআজ আপনি প্রিয় কাউকে জড়িয়ে ধরেছেন তো
আজ আপনি প্রিয় কাউকে জড়িয়ে ধরেছেন তোBeauty World
 
Laroboticaunavisionpedagogicaparaunaecnologiaactual 150713030642-lva1-app6891
Laroboticaunavisionpedagogicaparaunaecnologiaactual 150713030642-lva1-app6891Laroboticaunavisionpedagogicaparaunaecnologiaactual 150713030642-lva1-app6891
Laroboticaunavisionpedagogicaparaunaecnologiaactual 150713030642-lva1-app6891Cesar Jimenez
 
Aplicacion3enseanzadelascienciasylamatematicalocalizacionrevistaiberoamerican...
Aplicacion3enseanzadelascienciasylamatematicalocalizacionrevistaiberoamerican...Aplicacion3enseanzadelascienciasylamatematicalocalizacionrevistaiberoamerican...
Aplicacion3enseanzadelascienciasylamatematicalocalizacionrevistaiberoamerican...Cesar Jimenez
 
Silabusdeintroduccionalamatematicassuperiores 150713024107-lva1-app6892
Silabusdeintroduccionalamatematicassuperiores 150713024107-lva1-app6892Silabusdeintroduccionalamatematicassuperiores 150713024107-lva1-app6892
Silabusdeintroduccionalamatematicassuperiores 150713024107-lva1-app6892Cesar Jimenez
 
Silabomatematicabasica 150701001624-lva1-app6892
Silabomatematicabasica 150701001624-lva1-app6892Silabomatematicabasica 150701001624-lva1-app6892
Silabomatematicabasica 150701001624-lva1-app6892Cesar Jimenez
 
Introduction to Cloud Computing
Introduction to Cloud ComputingIntroduction to Cloud Computing
Introduction to Cloud ComputingRashmi Agale
 
Trabajo Tecnologia
Trabajo TecnologiaTrabajo Tecnologia
Trabajo TecnologiaJulian Gallo
 
Informe 1111
Informe 1111Informe 1111
Informe 1111sidokar
 
Use of technology in rehabilitation - Lorna Paul
Use of technology in rehabilitation - Lorna PaulUse of technology in rehabilitation - Lorna Paul
Use of technology in rehabilitation - Lorna PaulMS Trust
 

Destaque (18)

আজ আপনি প্রিয় কাউকে জড়িয়ে ধরেছেন তো
আজ আপনি প্রিয় কাউকে জড়িয়ে ধরেছেন তোআজ আপনি প্রিয় কাউকে জড়িয়ে ধরেছেন তো
আজ আপনি প্রিয় কাউকে জড়িয়ে ধরেছেন তো
 
Laroboticaunavisionpedagogicaparaunaecnologiaactual 150713030642-lva1-app6891
Laroboticaunavisionpedagogicaparaunaecnologiaactual 150713030642-lva1-app6891Laroboticaunavisionpedagogicaparaunaecnologiaactual 150713030642-lva1-app6891
Laroboticaunavisionpedagogicaparaunaecnologiaactual 150713030642-lva1-app6891
 
Aplicacion3enseanzadelascienciasylamatematicalocalizacionrevistaiberoamerican...
Aplicacion3enseanzadelascienciasylamatematicalocalizacionrevistaiberoamerican...Aplicacion3enseanzadelascienciasylamatematicalocalizacionrevistaiberoamerican...
Aplicacion3enseanzadelascienciasylamatematicalocalizacionrevistaiberoamerican...
 
Silabusdeintroduccionalamatematicassuperiores 150713024107-lva1-app6892
Silabusdeintroduccionalamatematicassuperiores 150713024107-lva1-app6892Silabusdeintroduccionalamatematicassuperiores 150713024107-lva1-app6892
Silabusdeintroduccionalamatematicassuperiores 150713024107-lva1-app6892
 
Silabomatematicabasica 150701001624-lva1-app6892
Silabomatematicabasica 150701001624-lva1-app6892Silabomatematicabasica 150701001624-lva1-app6892
Silabomatematicabasica 150701001624-lva1-app6892
 
Introduction to Cloud Computing
Introduction to Cloud ComputingIntroduction to Cloud Computing
Introduction to Cloud Computing
 
044777
044777044777
044777
 
Tenerife
TenerifeTenerife
Tenerife
 
Dunia quintero f_cris[1]
Dunia quintero f_cris[1]Dunia quintero f_cris[1]
Dunia quintero f_cris[1]
 
De la web a losmoviles
De la web a losmoviles De la web a losmoviles
De la web a losmoviles
 
Trabajo Tecnologia
Trabajo TecnologiaTrabajo Tecnologia
Trabajo Tecnologia
 
Practica5
Practica5Practica5
Practica5
 
Animales Acuáticos
Animales Acuáticos Animales Acuáticos
Animales Acuáticos
 
97 2003.
97 2003.97 2003.
97 2003.
 
BASE DE DATOS CON ACCES
BASE DE DATOS CON ACCESBASE DE DATOS CON ACCES
BASE DE DATOS CON ACCES
 
Informe 1111
Informe 1111Informe 1111
Informe 1111
 
Use of technology in rehabilitation - Lorna Paul
Use of technology in rehabilitation - Lorna PaulUse of technology in rehabilitation - Lorna Paul
Use of technology in rehabilitation - Lorna Paul
 
Extra
ExtraExtra
Extra
 

Semelhante a Otimizando o tamanho do APK

Crackeando aplicativos no android _by c0_m3nd4d0r
Crackeando aplicativos no android  _by c0_m3nd4d0rCrackeando aplicativos no android  _by c0_m3nd4d0r
Crackeando aplicativos no android _by c0_m3nd4d0rnunes666
 
Heroku escalabilidade
Heroku escalabilidadeHeroku escalabilidade
Heroku escalabilidadeBruno Andrade
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma AndroidÉdipo Souza
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerGiovanni Kenji Shiroma
 
Desenvolvendo para Android
Desenvolvendo para AndroidDesenvolvendo para Android
Desenvolvendo para AndroidClaudio Pereira
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3Jose Berardo
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com DockerWellington Silva
 
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
 
Sistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasSistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasLuiz Arthur
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresLuis Ferreira
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLtarginosilveira
 
Apresentação realidade aumentada para aplicações web e mobile
Apresentação   realidade aumentada para aplicações web e mobileApresentação   realidade aumentada para aplicações web e mobile
Apresentação realidade aumentada para aplicações web e mobileRWTH Aachen University
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao DockerRafael Dutra
 
Desenvolvendo com Angular CLI
Desenvolvendo com Angular CLIDesenvolvendo com Angular CLI
Desenvolvendo com Angular CLIVanessa Me Tonini
 

Semelhante a Otimizando o tamanho do APK (20)

Fat binaries
Fat binariesFat binaries
Fat binaries
 
Crackeando aplicativos no android _by c0_m3nd4d0r
Crackeando aplicativos no android  _by c0_m3nd4d0rCrackeando aplicativos no android  _by c0_m3nd4d0r
Crackeando aplicativos no android _by c0_m3nd4d0r
 
Heroku escalabilidade
Heroku escalabilidadeHeroku escalabilidade
Heroku escalabilidade
 
Android Fat Binaries
Android Fat BinariesAndroid Fat Binaries
Android Fat Binaries
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma Android
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
 
Desenvolvendo para Android
Desenvolvendo para AndroidDesenvolvendo para Android
Desenvolvendo para Android
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3
 
12 factor app. Melhor com Docker
12 factor app. Melhor com Docker12 factor app. Melhor com Docker
12 factor app. Melhor com Docker
 
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
 
Android Native Apps Hands On
Android Native Apps Hands OnAndroid Native Apps Hands On
Android Native Apps Hands On
 
Sistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasSistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando Programas
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOL
 
Desenvolvendo com IONIC
Desenvolvendo com IONICDesenvolvendo com IONIC
Desenvolvendo com IONIC
 
Apresentação realidade aumentada para aplicações web e mobile
Apresentação   realidade aumentada para aplicações web e mobileApresentação   realidade aumentada para aplicações web e mobile
Apresentação realidade aumentada para aplicações web e mobile
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao Docker
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
Desenvolvendo com Angular CLI
Desenvolvendo com Angular CLIDesenvolvendo com Angular CLI
Desenvolvendo com Angular CLI
 

Otimizando o tamanho do APK

  • 2. Qual o tamanho do seu aplicativo?
  • 3. ● Quanto espaço ele ocupa quando é instalado?
  • 4. ● Quantos dados ele consome?
  • 5. ● Quanto ele utiliza de memória?
  • 6. O que é um APK?
  • 7. O que é um APK? classes.dex res/ resources.arsc AndroidManifest.xml libs/ assets/ META-INF/
  • 8. Comprimindo o APK do Lolo Antes: APK: 7.0MB Espaço em disco: 9.79MB Depois: APK: ~2.0MB Espaço em disco: ~2.5MB
  • 9.
  • 10. Comprimindo o APK do Lolo 1- Minify, Proguard*, ShrinkResources 2- Limpando dependências 3- Filtrando resources 4- Otimizando Imagens 5- Vector Drawables
  • 12. Comprimindo o APK do Lolo 1- Minify, Proguard*, ShrinkResources APK: 3.4MB Espaço em disco: 4.21MB APK: 7.0MB Espaço em disco: 9.79MB zipAlignEnabled true minifyEnabled false signingConfig signingConfigs.release
  • 14. Comprimindo o APK do Lolo 2- Limpando dependências APK: 3.3MB Espaço em disco: 4.00MB APK: 3.4MB Espaço em disco: 4.21MB
  • 16. Comprimindo o APK do Lolo 3- Filtrando resources APK: 3.2MB Espaço em disco: 3.98MB APK: 3.3MB Espaço em disco: 4.0MB shrinkResources true resConfigs “en”, “fr”
  • 19. Comprimindo o APK do Lolo 4- Otimizando Imagens APK: 2.2MB Espaço em disco: 2.61MB APK: 3.3MB Espaço em disco: 4.0MB
  • 20. * Png Compress https://tinypng.com/ * Jpeg Mini http://www.jpegmini.com/ * Não usem o Zopfli para comprimir o APK!! * Desativem  Cruncher do AAPT
  • 22. Comprimindo o APK do Lolo 5- Otimizando Imagens APK: 1.98MB Espaço em disco: 2.42MB APK: 2.2MB Espaço em disco: 2.71MB
  • 23. * Habilitar no build.gradle vectorDrawables.useSupportLibrary = true * Utilizar sempre appCompat app:srcCompat * Não esquecer de habilitar nos Fragment’s/Activity’s static { AppCompatDelegate.setCompatVectorFromSourcesEnabled(true); } * Sempre que utilizar em drawableLeft/Top/Right/Left <selector xmlns:android="..."> <item android:state_checked="true" android:drawable="@drawable/checked_icon" /> <item android:drawable="@drawable/icon" /> </selector>
  • 24.
  • 26.
  • 27.
  • 28.
  • 29. Redex
  • 30. • Redex é um bytecode (dex) otimizador Android desenvolvido originalmente no Facebook.  • Ele fornece um quadro de leitura, escrita e análise DEX arquivos, e um conjunto de otimização passa que o uso dessa estrutura para melhorar a bytecode.  • APK otimizado por Redex deve ser menor e mais rápido do que sua fonte. • Melhora cerca de 25% melhor na inicialização. https://github.com/facebook/redex
  • 31. Agradecimentos/Link’s: * Matheus Corregiari * Wojtek Kalicinski https://medium.com/google-developers/smallerapk-part-1-anatomy-of-an- apk-da83c25e7003#.u1v3o93vm * Chris Banes https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors- 91cbafa87c88#.jcqmhxgxw
  • 32.
  • 33. www.concretesolutions.com.br Rio de Janeiro – Rua São José, 90 – cj. 2121 Centro – (21) 2240-2030 São Paulo - Rua Sansão Alves dos Santos, 433 4º andar - Brooklin - (11) 4119-0449 Ajudamos empresas a criar produtos digitais de sucesso