SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
Pon tu app a
dieta con
Proguard
Anahí Salgado
@anncode
El tamaño de las apps
El tamaño de las apps
Raw APK
● apk es tipo de empaquetado, comprimido zip
● Contiene archivos .dex
● Resources
○ imagenes
○ layouts
○ etc.
Download
● Google Play Store nos muestra
una versión comprimida de
nuestro apk
Install
● Raw APK
○ recursos de nuestra app
○ recursos utilizados en otras versines
■ idiomas
■ densidades
■ arquitectura cpu
■ etc.
Install
● Runtime ART
● Froyo (compilación Just in time)
○ Traduce el bytecode (dexcode) a lenguaje máquina en tiempo de ejecución
● .aot
○ un archivo generado posterior a la compilación
○ se usa al abrir la app para evitar que la aplicación se compile continuamente
● Menor procesamiento pero un archivo MUY
GRANDE
Install
● Librerías nativas no están comprimidas
● Caché + base datos + shared preferences + almacenamiento
Install
● Librerías nativas no están comprimidas
● Caché + base datos + shared preferences + almacenamiento
Update the app
● Google Play Store hace un cálculo para generar una delta entre el
tamaño de la antigua app y la nueva
● Revisa los bytes similares y el resto lo convierte en un comprimido
Cómo reducir el tamaño de mis apps..??
Compresión de Imagenes
● Pasar las imagenes por algún compresor, preprocesador que redusca
el tamaño
● Usar iconos vector de los recursos de android
● Usar Zopflipng de Google
Compresión del Código
Proguard
Compresión del código
Proguard - Shrinks
Proguard - Ofuscación
Proguard - Ofuscación
Proguard - Ofuscación
Proguard - Ofuscación
● $ ./gradlew app:dependencies
Proguard - Ofuscación - Outputs
● dump.txt
Describe la estructura interna de todos los archivos de clase en la APK.
● mapping.txt
Proporciona una traducción entre los nombres de clase, método y campo originales y
ofuscado.
● seeds.txt
Muestra una lista de las clases y de los miembros que no fueron ofuscado.
● usage.txt
Muestra el código que fue retirado de la APK.
● These files are saved at <module-
name>/build/outputs/mapping/release/.
Anahí Salgado
@anncode

Más contenido relacionado

La actualidad más candente

TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaTypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaMicael Gallego
 
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?Micael Gallego
 
Instrucciones Basicas para C++
Instrucciones Basicas para C++Instrucciones Basicas para C++
Instrucciones Basicas para C++Dj109
 
Introducción Nivelación PHP
Introducción Nivelación PHPIntroducción Nivelación PHP
Introducción Nivelación PHPRodrigo Miranda
 
6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a Objetos6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a ObjetosJose Emilio Labra Gayo
 
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...Jose Emilio Labra Gayo
 
Estructura basica de un programa
Estructura basica de un programaEstructura basica de un programa
Estructura basica de un programaRay-kun Olivera
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivastacubomx
 
Que es visual c# eduardo sorto
Que es visual c# eduardo sortoQue es visual c# eduardo sorto
Que es visual c# eduardo sortoeduardo sorto
 
Unidad i antecedentes
Unidad i antecedentesUnidad i antecedentes
Unidad i antecedentesBrayanBaffz
 

La actualidad más candente (17)

generalidades java
generalidades javageneralidades java
generalidades java
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaTypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
 
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
 
Instrucciones Basicas para C++
Instrucciones Basicas para C++Instrucciones Basicas para C++
Instrucciones Basicas para C++
 
Curso basico c sharp
Curso basico c sharpCurso basico c sharp
Curso basico c sharp
 
Introducción Nivelación PHP
Introducción Nivelación PHPIntroducción Nivelación PHP
Introducción Nivelación PHP
 
Tema 1[1][1]
Tema 1[1][1]Tema 1[1][1]
Tema 1[1][1]
 
6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a Objetos6 Principios de Programación Orientada a Objetos
6 Principios de Programación Orientada a Objetos
 
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
1 Introducción a los Lenguajes de Programación y a la Programación Orientada ...
 
Programacion
ProgramacionProgramacion
Programacion
 
Diapositivas de JAVA
Diapositivas de JAVADiapositivas de JAVA
Diapositivas de JAVA
 
Estructura basica de un programa
Estructura basica de un programaEstructura basica de un programa
Estructura basica de un programa
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
 
tutorial de c++
tutorial de c++tutorial de c++
tutorial de c++
 
Que es visual c# eduardo sorto
Que es visual c# eduardo sortoQue es visual c# eduardo sorto
Que es visual c# eduardo sorto
 
Unidad i antecedentes
Unidad i antecedentesUnidad i antecedentes
Unidad i antecedentes
 

Similar a Pon a dieta tus apps con Proguard de android

Programación de Apps con Android – Avanzado por Jorge Pintado
Programación de Apps con Android – Avanzado por Jorge PintadoProgramación de Apps con Android – Avanzado por Jorge Pintado
Programación de Apps con Android – Avanzado por Jorge PintadoCongresoWeb
 
01 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 301 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 3Diego Andrés Alvarez Marín
 
Introducción a Android
Introducción a AndroidIntroducción a Android
Introducción a Androidmcanalesc94
 
04 taller-django
04 taller-django04 taller-django
04 taller-djangosamerscd
 
Ingeniería inversa básica en android tomo ii
Ingeniería inversa básica en android tomo iiIngeniería inversa básica en android tomo ii
Ingeniería inversa básica en android tomo iiFreelance
 
principales programas ofimaticos utilizados software y archivos.
principales programas ofimaticos utilizados software y archivos.principales programas ofimaticos utilizados software y archivos.
principales programas ofimaticos utilizados software y archivos.anmaryst
 
Curso de desarrollo de aplicaciones Android - Sesión 1
Curso de desarrollo de aplicaciones Android - Sesión 1Curso de desarrollo de aplicaciones Android - Sesión 1
Curso de desarrollo de aplicaciones Android - Sesión 1Daniel Alvarez
 
Seminario Android (Parte 1) - movilforum
Seminario Android (Parte 1) - movilforumSeminario Android (Parte 1) - movilforum
Seminario Android (Parte 1) - movilforumvideos
 
Herramientas case[procesamiento de lenguaje analisis de p
Herramientas case[procesamiento de lenguaje   analisis de pHerramientas case[procesamiento de lenguaje   analisis de p
Herramientas case[procesamiento de lenguaje analisis de pManuel Villalta
 
Herramientas indispensables para un desarrollador java
Herramientas indispensables para un desarrollador javaHerramientas indispensables para un desarrollador java
Herramientas indispensables para un desarrollador javaAurora Cervantes
 
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxLo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxSergio Antonio Ochoa Martinez
 

Similar a Pon a dieta tus apps con Proguard de android (20)

Programación de Apps con Android – Avanzado por Jorge Pintado
Programación de Apps con Android – Avanzado por Jorge PintadoProgramación de Apps con Android – Avanzado por Jorge Pintado
Programación de Apps con Android – Avanzado por Jorge Pintado
 
01 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 301 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 3
 
202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
 
Introducción a Android
Introducción a AndroidIntroducción a Android
Introducción a Android
 
04 taller-django
04 taller-django04 taller-django
04 taller-django
 
Ingeniería inversa básica en android tomo ii
Ingeniería inversa básica en android tomo iiIngeniería inversa básica en android tomo ii
Ingeniería inversa básica en android tomo ii
 
principales programas ofimaticos utilizados software y archivos.
principales programas ofimaticos utilizados software y archivos.principales programas ofimaticos utilizados software y archivos.
principales programas ofimaticos utilizados software y archivos.
 
Como usar el lenguaje c++
Como usar el lenguaje c++Como usar el lenguaje c++
Como usar el lenguaje c++
 
01 - Introducción al lenguaje C
01 - Introducción al lenguaje C01 - Introducción al lenguaje C
01 - Introducción al lenguaje C
 
Curso de desarrollo de aplicaciones Android - Sesión 1
Curso de desarrollo de aplicaciones Android - Sesión 1Curso de desarrollo de aplicaciones Android - Sesión 1
Curso de desarrollo de aplicaciones Android - Sesión 1
 
Seminario Android (Parte 1) - movilforum
Seminario Android (Parte 1) - movilforumSeminario Android (Parte 1) - movilforum
Seminario Android (Parte 1) - movilforum
 
Herramientas case[procesamiento de lenguaje analisis de p
Herramientas case[procesamiento de lenguaje   analisis de pHerramientas case[procesamiento de lenguaje   analisis de p
Herramientas case[procesamiento de lenguaje analisis de p
 
Andrid studio
Andrid studioAndrid studio
Andrid studio
 
TUTORIAL
TUTORIALTUTORIAL
TUTORIAL
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
Mantenimiento
MantenimientoMantenimiento
Mantenimiento
 
Practica Mantenimiento 2
Practica Mantenimiento 2Practica Mantenimiento 2
Practica Mantenimiento 2
 
Anjuta
AnjutaAnjuta
Anjuta
 
Herramientas indispensables para un desarrollador java
Herramientas indispensables para un desarrollador javaHerramientas indispensables para un desarrollador java
Herramientas indispensables para un desarrollador java
 
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxLo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
 

Pon a dieta tus apps con Proguard de android