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

Si está creando alguna aplicación y desea orientar esta aplicación a una gran audiencia, hay muchos factores que debe considerar al crear sus aplicaciones. El factor más importante al construir cualquier aplicación es su tamaño. El tamaño de la aplicación importa mucho. Si el tamaño de su aplicación es muy alto, a los usuarios no les gusta descargar aplicaciones tan grandes que requieren un espacio de almacenamiento y cargos de datos tan grandes. Por lo tanto, es muy importante mantener el tamaño de su aplicación para sus usuarios mientras crea cualquier aplicación de Android. En este artículo, veremos cómo reducir el tamaño de la aplicación con R8. 

A continuación se presentan algunos de los temas que veremos en este artículo.

  • ¿Qué es R8?
  • ¿Cómo usar la reducción de R8 en tu aplicación?
  • ¿Cómo funciona la reducción en R8?

La configuración requerida para usar la aplicación R8 se reduce

  • Para habilitar R8 en su aplicación, debe usar la versión de Android Studio como 3.4 o superior.
  • La versión de Gradle dentro de su proyecto debería tener una versión de alrededor de 3.4.0

¿Qué es R8? 

What is R8

R8 es una herramienta de reducción de aplicaciones que se utiliza para reducir el tamaño de su aplicación. Esta herramienta presente en Android Studio funciona con las reglas de Proguard. R8 convertirá el código de su aplicación en código Dalvik optimizado. Durante este proceso de conversión, R8 eliminará las clases y los métodos que no se utilizan dentro de nuestra aplicación. Junto con estas aplicaciones de Android, tienen tantos archivos sin usar que no necesitamos dentro de nuestra aplicación, por lo que R8 eliminará esos archivos y ayudará a reducir el tamaño de la aplicación. El beneficio de usar R8 es que hará que su aplicación sea más segura y difícil de aplicar ingeniería inversa. Así que esto nos ayudará a aumentar la seguridad de nuestra aplicación. 

Diferentes técnicas utilizadas por R8 para reducir el tamaño de APK:

  • Optimización de su código : en este proceso, R8 realmente optimizará el código para reducir el tamaño de la aplicación. Entonces, en el proceso de optimización, eliminará las clases no utilizadas, los métodos y el código muerto presente dentro de nuestra aplicación.
  • Cambio de nombre del identificador : en este proceso, R8 realmente cambiará el nombre de nuestras clases y nombres de variables. Mientras escribimos código, usamos algún patrón de identificador para que podamos entender nuestro código correctamente. Pero en este proceso, R8 cambiará el nombre de todas las clases a nombres de variables más pequeños que también ayudarán a reducir el tamaño del APK. por ejemplo, ha generado una nueva clase llamada «Constante» para almacenar algunas constantes que se utilizan en diferentes partes de nuestra aplicación. R8 cambiará el nombre de esa clase en cualquier nombre más pequeño, digamos «a» o en cualquier otro formato.
  • Reducción : mientras escribimos código, creamos muchos métodos dentro de nuestra aplicación. Al crear este método, algunos de los métodos no se utilizan dentro de nuestra aplicación, esos métodos se denominan métodos inalcanzables que no se utilizan en ningún lugar dentro de nuestra aplicación. Entonces, R8 eliminará esos métodos inalcanzables para reducir el tamaño de APK.
  • Optimización de bibliotecas de terceros : para la implementación de muchas características externas dentro de nuestra aplicación, los desarrolladores generalmente prefieren usar bibliotecas externas dentro de su aplicación. Pero al usar estas bibliotecas, instalará tantos archivos que no necesitamos para nuestra aplicación. Entonces, R8 optimizará el código para esa biblioteca y mantendrá solo el código que se requiere en nuestra aplicación y eliminará los archivos que no se usan.

Ahora avanzaremos hacia la implementación práctica de R8 dentro de nuestra aplicación. 

¿Cómo usar la reducción R8 en la aplicación? 

La implementación de la reducción R8 es un proceso de un solo paso. En primer lugar, cree un nuevo proyecto con una actividad vacía dentro de Android Studio. Para crear un nuevo proyecto en Android Studio. Echa un vistazo a este enlace sobre Cómo crear un nuevo proyecto en Android Studio . Después de crear este nuevo proyecto. Navegue a Gradle scripts > build.gradle(:app) y podrá ver la sección de buildTypes. Dentro de este cambio minifyEnabled de falso a verdadero para habilitar R8. A continuación se muestra la sección donde tenemos que hacer un cambio.

tipos de compilación {

       liberar {

           // hacer el cambio aqui

           minifyEnabled verdadero

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

           }

   }

Después de cambiarlo, sincroniza tu proyecto y R8 se agregará dentro de tu aplicación. Ahora puedes probar el tamaño del APK compilando el APK. También puede probar el tamaño de APK agregando algunas bibliotecas externas. Pruebe el tamaño de APK usando R8 y sin usar R8 podrá ver la diferencia entre el tamaño de APK. 

¿Cómo funcionará la reducción en R8? 

Los algoritmos que utiliza R8 para la reducción del tamaño de la aplicación rastrearán los métodos no utilizados y el código inalcanzable en su aplicación y eliminarán esos métodos. Entonces, R8 comenzará a rastrear su código desde un punto de entrada que tenemos que declarar para cualquier clase y desde ese punto de entrada, R8 comenzará a rastrear el código para el código no utilizado. Por ejemplo, vamos a echar un vistazo a una clase que se crea a continuación: 

Java

/*package whatever //do not write package name here */
  
import java.io.*;
  
// entry point for R8 
class GFG {
  // Method one is used 
  // inside our main method. 
  private void methodone(){
            System.out.println("Method 1 ");
  }
  // Method two is not being
  // used in our main method. 
  private void methodtwo(){
            System.out.println("Method 2 ");
  }
        
      // Our main method 
    public static void main (String[] args) {
      methodone();
    }
}

Dentro del proguard le agregaremos la siguiente regla como: 

-mantener la clase GFG {

   public static void principal (String[] args) {

       }

}

En el ejemplo anterior, proguard comenzará a escanear su aplicación desde el método principal y dentro de este método, se llamará primero a methodone() y, después de imprimir el método uno, se detendrá el seguimiento. Luego, R8 buscará el método no utilizado dentro de nuestra aplicación. El método no utilizado es el método dos() , que no estamos usando dentro de nuestro método principal. Entonces, R8 eliminará ese método dos() dentro de nuestra aplicación. y se cambiará el nombre de methodone() con algunos nombres más pequeños y se alineará el código correctamente. Después de alinear, el código se verá como el siguiente ejemplo. 

Java

/*package whatever //do not write package name here */
  
import java.io.*;
  
class GFG {
    public static void main (String[] args) {
            System.out.println("Method 1 ");
    }
}

Entonces, dentro de nuestra aplicación en Android Studio, hay tantos archivos que R8 debe rastrear. Entonces, para rastrear estos archivos y decidir el punto de entrada para cada archivo, se usa la herramienta aapt2. Agregue la siguiente línea a la de la línea donde habilitó su proguard.

minifyEnabled verdadero

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

Pero al usar esto, hay algunos problemas con los archivos gson. Cuando su código contiene algunos archivos de reflexión, eliminará ese código, pero debemos mantenerlo dentro de nuestro proyecto. Para implementar esto, agregue la siguiente línea debajo de minifyEnabled true. 

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

Entonces, para superar los problemas, Gson en Android agrega la línea que se muestra arriba en su archivo build.gradle. Entonces, de esta manera, hemos implementado la reducción de la aplicación R8 dentro de nuestra aplicación y esto ayudará a reducir 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 *