¿Cómo usar Proguard para reducir el tamaño de APK en Android?

El tamaño de la aplicación importa mucho al crear cualquier aplicación. Si el tamaño de la aplicación es mayor, la mayoría de los usuarios no descargarán su aplicación debido a su gran tamaño. El gran tamaño de la aplicación le costará a su usuario una gran cantidad de datos y también requerirá espacio en disco para instalar su aplicación. Entonces, reducir el tamaño de APK proguard es una de las herramientas importantes de Java que se utiliza para reducir el tamaño de su APK. En este artículo vamos a echar un vistazo a los temas mencionados a continuación: 

  • ¿Qué es ProGuard?
  • ¿Cuáles son los usos de Proguard?
  • ¿Cómo usar proguard dentro de tu aplicación?
  • ¿Cuáles son las desventajas de usar Proguard?
  • Reglas personalizadas en Proguard.

¿Qué es ProGuard? 

Proguard es una herramienta de Java que está presente en Android y se utiliza para reducir el tamaño de su aplicación. Es una herramienta gratuita que te ayudará a reducir el tamaño de tu aplicación en un 8,5 %. Proguard convertirá el código de su aplicación en un código de bytes Dalvik optimizado. El proceso de conversión es el siguiente: 

What is Proguard?

¿Cuáles son los usos de Proguard? 

  • Proguard ofuscará su código y cambiará el nombre de su código. En este proceso, cambiará el nombre de sus archivos de diferentes clases de Java. Esto hará que su aplicación sea más segura y difícil de aplicar ingeniería inversa.
  • Eliminará fragmentos de código no utilizados dentro de su código y optimizará su código.
  • El uso de proguard reducirá el tamaño de su aplicación en un 8,5 %.
  • Proguard reducirá los recursos dentro de su aplicación que no se utilizan en su aplicación.
  • El uso de proguard reducirá el tamaño de su aplicación y hará que su código esté en línea. Esto hará que su aplicación sea más rápida y de menor tamaño.

¿Cómo usar Proguard dentro de tu aplicación? 

Para habilitar Proguard dentro de su aplicación, vaya a la aplicación > Gradle Scripts > Abrir archivo build.gradle . Dentro de ese archivo gradle, verá las siguientes líneas de código en su archivo dentro de la sección de lanzamiento. Cambie minifyEnabled de falso a verdadero. Esto activará su proguard con el archivo proguard. 

tipos de compilación {

       liberar {

           // hacer el cambio aqui

           minifyEnabled verdadero

           proguardFiles getDefaultProguardFile(‘proguard-android-optimize.txt’), ‘proguard-rules.pro’

         }

   }

Encontrará este conjunto de código dentro de su bloque de lanzamiento. Esto significa que Proguard se activará solo para su aplicación de lanzamiento.  

Reglas personalizadas en Proguard 

Cuando usamos proguard dentro de nuestra aplicación, eliminará automáticamente algunas clases modales que se requieren dentro de nuestra aplicación. Entonces, para evitar eliminar estos archivos, debemos agregar algunas reglas personalizadas dentro de nuestra aplicación. 

1. Mantener nuestra clase

Al usar bibliotecas para redes o al implementar un RecyclerView o ListView. Tenemos que crear una clase de datos para almacenar todos nuestros datos. Entonces, al usar Proguard, eliminará las variables de la clase que no sirven. Entonces, para evitar la eliminación de variables de esta clase, debemos agregar la anotación @Keep a esa clase. Por ejemplo, estamos creando una clase de datos para almacenar studentName y StudentId dentro de nuestra clase y no queremos que proguard ofusque nuestra clase. Entonces, en este caso, le agregaremos la anotación @Keep. Entonces, en el siguiente fragmento de código, @Keep evitará que esta clase se ofusque. Junto con «@keep», también podemos usar -keep para evitar que nuestra clase se ofusque. Si tenemos que conservar alguna variable de nuestra clase, anotaremos esa variable con «@SerializableName». Este tipo de anotación se usa principalmente cuando tenemos que analizar datos de un archivo JSON o de un servidor.  

Java

/*package whatever //do not write package name here */
  
import java.io.*;
@Keep
class GFG {
   string StudentName;
     int studentID;
}

 2. Mantener los nombres de nuestra Clase y sus miembros

Supongamos que si tenemos que mantener el nombre de nuestra clase y sus variables miembro, usaremos la anotación como ‘-keepnames’. Esta anotación mantendrá el nombre de esa clase así como sus variables miembro. Aunque proguard reducirá esta clase, no la ofuscará. El siguiente fragmento de código nos dirá cómo tenemos que usar «-keepnames» para mantener a los miembros de nuestra clase. 

Java

/*package whatever //do not write package name here */
  
import java.io.*;
  
-keepnames class GFG {
   string studentName;
  int studentId;
}

3. Mantener a los miembros de nuestra clase 

Si queremos evitar que solo los miembros de la clase y no la clase sean ofuscados por Proguard. Luego anotaremos esa clase con «-keepclassmembers». Esta anotación evitará la ofuscación de los miembros de nuestra clase. A continuación se muestra el fragmento de código en el que veremos la implementación de este método.

Java

/*package whatever //do not write package name here */
  
import java.io.*;
  
-keepclassmembers  class GFG {
   string studentName;
  int studentId;
}

4. Mantener anotaciones

Al usar Proguard, eliminará todas las anotaciones que agregamos en nuestra clase proporcionadas por las bibliotecas. En cualquier caso, este código funciona bien sin ningún problema. Pero puede causar problemas si se elimina. Si está utilizando una biblioteca Retrofit para obtener datos de servidores web en su aplicación, entonces usa tantas anotaciones como «@GET», «@POST», «@PUSH» y muchas más. Si estas anotaciones se eliminan , la actualización puede causar problemas para obtener los datos del servidor. Entonces, para evitar la eliminación de estas anotaciones, usaremos la palabra clave «-keepattributes». A continuación se muestra el fragmento de código de su uso. 

Java

/*package whatever //do not write package name here */
  
import java.io.*;
  
-keepattributes @GET
class GFG {
   string studentName;
  int studentID;
}

5. Uso de bibliotecas externas

Cuando estamos usando algunas bibliotecas externas. Proporcionan reglas específicas que podemos agregar a nuestras reglas proguard. Pero si la biblioteca no tiene ninguna regla presente. Entonces, en ese caso, podemos llegar a ver advertencias en nuestros registros. Para evitar las advertencias de esta biblioteca, debemos agregar la biblioteca con la anotación «-dontwarn» en nuestro proguard. 

-dontwarn «tu biblioteca»

Desventajas de usar Proguard

A veces, al usar Proguard, eliminará un gran conjunto de código que se requiere y esto podría causar fallas en su aplicación. Entonces, para evitar eliminar este código de nuestro código de aplicación. Tenemos que agregar algunas reglas personalizadas dentro de nuestro Proguard para mantener ese archivo específico, de modo que se evite la eliminación de esos archivos y nuestra aplicación no se bloquee incluso después de usar Proguard.

Conclusión

Por lo tanto, Proguard es muy útil para reducir el tamaño de nuestra aplicación y también hará que nuestra aplicación sea más segura y difícil de aplicar ingeniería inversa. Así que deberíamos usar esto para optimizar el tamaño de nuestra aplicación. 

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *