Pon a dieta tus apps con Proguard de android

30
Pon tu app a dieta con Proguard Anahí Salgado @anncode

Transcript of Pon a dieta tus apps con Proguard de android

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.txtDescribe la estructura interna de todos los archivos de clase en la APK.

● mapping.txtProporciona una traducción entre los nombres de clase, método y campo originales y ofuscado.

● seeds.txtMuestra una lista de las clases y de los miembros que no fueron ofuscado.

● usage.txtMuestra el código que fue retirado de la APK.

● These files are saved at <module-name>/build/outputs/mapping/release/.

Anahí Salgado@anncode