Android
¿Qué es ProGuard? ¿Qué es el uso en Android?
Buscar..
Introducción
Proguard es un reductor, optimizador, ofuscador y preverificador de archivos de clase Java. Detecta y elimina clases, campos, métodos y atributos no utilizados. Optimiza el bytecode y elimina las instrucciones no utilizadas. Renombra las clases, campos y métodos restantes utilizando nombres cortos sin significado.
Reduce tu código y recursos con proguard
Para hacer que su archivo APK sea lo más pequeño posible, debe habilitar la reducción para eliminar el código y los recursos no utilizados en su versión de lanzamiento. Esta página describe cómo hacerlo y cómo especificar qué código y recursos mantener o descartar durante la compilación.
La reducción de código está disponible con ProGuard, que detecta y elimina las clases, campos, métodos y atributos no utilizados de su aplicación empaquetada, incluidos los de las bibliotecas de códigos incluidas (lo que la convierte en una herramienta valiosa para trabajar alrededor del límite de referencia de 64k). ProGuard también optimiza el código de bytes, elimina las instrucciones de código no utilizadas y confunde las clases, campos y métodos restantes con nombres cortos. El código confuso dificulta la ingeniería inversa de su APK, lo que es especialmente valioso cuando su aplicación utiliza características sensibles a la seguridad, como la verificación de licencias.
La reducción de recursos está disponible con el complemento de Android para Gradle, que elimina los recursos no utilizados de su aplicación empaquetada, incluidos los recursos no utilizados en las bibliotecas de códigos. Funciona junto con la reducción de código, de modo que una vez que se ha eliminado el código no utilizado, cualquier recurso que ya no se hace referencia también se puede eliminar de forma segura.
Encoge tu código
Para habilitar la reducción de código con ProGuard
, agregue minifyEnabled
true al tipo de compilación apropiado en su archivo build.gradle
.
Tenga en cuenta que la reducción de código ralentiza el tiempo de compilación, por lo que debe evitar usarlo en su compilación de depuración si es posible. Sin embargo, es importante que habilite la reducción de código en su APK final utilizado para las pruebas, ya que podría introducir errores si no personaliza suficientemente qué código mantener.
Por ejemplo, el siguiente fragmento de código de un archivo build.gradle
permite la reducción de código para la versión de lanzamiento:
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
...
}
Además de la propiedad minifyEnabled
, la propiedad proguardFiles
define las ProGuard rules
:
El método getDefaultProguardFile ('proguard-android.txt') obtiene la configuración predeterminada de ProGuard de la tools/proguard/ folder
Android SDK. Consejo: para reducir aún más el código, pruebe el proguard-android-optimize.txt
que se encuentra en la misma ubicación. Incluye las mismas reglas de ProGuard, pero con otras optimizaciones que realizan análisis en el nivel de bytecode, dentro y en todos los métodos, para reducir aún más el tamaño de su APK y ayudarlo a correr más rápido. El archivo proguard-rules.pro
es donde puede agregar reglas personalizadas de ProGuard. De forma predeterminada, este archivo se encuentra en la raíz del módulo (junto al archivo build.gradle). Para añadir más reglas ProGuard que son específicas para cada variante de construcción, agregar otra propiedad proguardFiles en el correspondiente productFlavor
bloque. Por ejemplo, el siguiente archivo de Gradle agrega flavor2-rules.pro al sabor de producto flavour2. Ahora flavor2 usa las tres reglas de ProGuard porque también se aplican las del bloque de publicación.
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
productFlavors {
flavor1 {
}
flavor2 {
proguardFile 'flavor2-rules.pro'
}
}
}