Diferencia entre Proguard y R8 en Android

Proguard y R8 son herramientas similares que se utilizan para reducir el tamaño de nuestro APK y aumentar el rendimiento de nuestro APK al reducir los recursos no utilizados. En este artículo, vamos a echar un vistazo a: 

  • ¿Qué es ProGuard?
  • ¿Qué es R8?
  • Diferencia entre Proguard y R8.

¿Qué es ProGuard? 

Proguard es una herramienta Java en Android que ayuda a hacer las siguientes cosas, como: 

  • Elimina las clases y los métodos no utilizados de su aplicación, lo que ayuda a reducir el tamaño de su APK.
  • Hace que su aplicación sea difícil de aplicar ingeniería inversa al ofuscar el código.
  • Reduce el tamaño de su aplicación.

¿Cómo habilitar Proguard en su aplicación? 

Para habilitar ProGuard en su aplicación, vaya a Gradle Scripts > build.gradle(:app) y luego verá un método llamado buildTypes. 

tipos de compilación {

       liberar {

           minifyEnabled verdadero

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

       }

}

En este bloque de código, tenemos que cambiar minifyEnabled a verdadero para activar nuestro Proguard. Este código de Proguard está escrito debajo del bloque de lanzamiento, por lo que solo funcionará en la versión de lanzamiento de su APK. Activará el proguard que lo tomará del archivo llamado como

‘proguard-android.txt’.  

¿Qué es R8? 

R8 es otra herramienta que convertirá su código de bytes Java en un formato optimizado de código dex. Comprobará toda la aplicación y eliminará las clases y métodos no utilizados. Nos ayuda a reducir el tamaño de nuestra APK y a hacer nuestra aplicación más segura. R8 usa reglas proguard similares para modificar su comportamiento predeterminado. 

¿Cómo habilitar R8 en su aplicación?

R8 ya está presente en su aplicación, solo tiene que habilitarlo. Para habilitarlo, simplemente navegue a Gradle Scripts > build.gradle(:app) y luego podrá ver un método llamado buildTypes.

tipos de compilación {

       liberar {

           minifyEnabled verdadero

       }

}

En este bloque de código, tenemos que cambiar minifyEnabled a verdadero para activar R8. Este código para R8 está escrito bajo el bloque de lanzamiento que solo funciona en la versión de lanzamiento de su APK. 

Diferencia entre Proguard y R8.

  • R8 tiene más compatibilidad con Kotlin que con Proguard.
  • R8 tiene un tiempo de procesamiento más rápido que Proguard, lo que reduce el tiempo de compilación.
  • R8 ofrece mejores resultados de salida que Proguard.
  • R8 reduce el tamaño de la aplicación en un 10 %, mientras que Proguard reduce el tamaño de la aplicación en un 8,5 %.
  • La aplicación de Android que tiene un complemento de Gradle superior a 3.4.0 o superior, entonces el proyecto usa R8 de forma predeterminada solo con las reglas de Proguard.

guardaespaldas

Proguard

En Proguard, el compilador Java convierte el código de las aplicaciones en código de bytes JAVA y Proguard convertirá este código de bytes en el código de bytes optimizado de Java. Este código de bytes de Java luego se optimiza mediante dex en el código de bytes de Dalvik optimizado. El proceso de conversión de código de aplicaciones a código de bytes Dalvik optimizado es un proceso de cuatro pasos.  

R8

R8

En R8, el compilador Java convierte el código de aplicaciones en código de bytes JAVA y luego R8 convertirá directamente el código de bytes JAVA en código de bytes Dalvik optimizado. El proceso de conversión del código de aplicaciones al código de bytes Dalvik optimizado es un proceso de tres pasos que es más rápido en comparación con proguard. 

Tabla de diferencias 

guardaespaldas

R8

Proguard tiene menor velocidad en comparación con R8, lo que afecta el tiempo de construcción. R8 tiene un tiempo de procesamiento más rápido que ayuda a los desarrolladores a reducir el tiempo de compilación.
La calidad de salida mediante el uso de proguard no es superior.  La calidad de salida usando R8 es superior.
Proguard reduce el tamaño de la aplicación en un 8,5 %. R8 reduce el tamaño de la aplicación en un 10 %.

El proceso de conversión de código de aplicaciones a código de bytes Dalvik optimizado es el siguiente: 

Código de aplicaciones > Código de bytes de Java > Código de bytes de Java optimizado > Código de bytes de Dalvik optimizado.

El proceso de conversión de código de aplicaciones a código de bytes Dalvik optimizado es el siguiente: 

Código de aplicaciones > Código de bytes de Java > Código de bytes de Dalvik optimizado.

Proguard solo es compatible con el complemento Gradle que está por debajo de 3.4.0 R8 solo es compatible con el complemento Gradle de 3.4.0 y superior.
Las optimizaciones de mirilla en Proguard son alrededor de 520. Las optimizaciones de mirilla en R8 son alrededor de 6.
Ninguno de los pasos para convertir el código de Apps en código Dalvik optimizado es 4. Ninguno de los pasos para convertir el código de aplicaciones en el código de bytes Dalvik optimizado es 3. 
Proguard no tiene optimizaciones específicas de Kotlin.  R8 tiene optimizaciones específicas de Kotlin. 
Proguard no propaga argumentos constantes.  R8 propaga argumentos constantes. 

Conclusión

Mientras que R8 es más rápido que Proguard, ya que hay menos pasos numéricos. Reduce el tamaño de la aplicación de manera optimizada con un optimizador de tiempo de compilación predeterminado. 

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 *