Skip to content
Home » Cordova: compilando con proguard

Cordova: compilando con proguard

Apache Cordova es una plataforma popular para desarrollar aplicaciones móviles multiplataforma utilizando tecnologías web como HTML, CSS y JavaScript. Sin embargo, al generar aplicaciones para Android, es común buscar formas de optimizar el tamaño y el rendimiento de la APK resultante. Aquí es donde entra en juego ProGuard, una herramienta que permite ofuscar, optimizar y reducir el tamaño del código en aplicaciones Android. Este artículo explica cómo integrar y utilizar el plugin de ProGuard en un proyecto Cordova.

¿Qué es ProGuard?

ProGuard es una herramienta de código abierto que se utiliza principalmente para:

  • Ofuscar: Oculta el código fuente, haciendo más difícil la ingeniería inversa.
  • Optimizar: Reduce el tamaño del código eliminando partes no utilizadas y optimizando el bytecode.
  • Minificar: Reduce el tamaño de los recursos y el código compilado.

En el contexto de Cordova, ProGuard se puede integrar mediante un plugin para mejorar la seguridad y el rendimiento de las aplicaciones Android generadas.

Requisitos previos

Antes de empezar, asegúrate de tener lo siguiente:

  1. Entorno Cordova configurado: Instala Cordova CLI y configura el entorno de desarrollo para Android (Android SDK, Java JDK, etc.).
  2. Conocimientos básicos de Cordova: Familiaridad con la estructura de un proyecto Cordova y los comandos CLI.
  3. Gradle instalado: ProGuard funciona con el sistema de compilación Gradle, que es usado por Cordova para generar APKs.

Configuración de ProGuard

El plugin agrega configuraciones predeterminadas de ProGuard, pero puedes personalizar las reglas para adaptarlo a tu proyecto. Las reglas de ProGuard se encuentran en el archivo proguard-rules.pro, ubicado en:

platforms/android/app/proguard-rules.pro

Si no existe, puedes crearlo manualmente. Aquí puedes añadir reglas específicas para evitar problemas con bibliotecas de terceros o para personalizar la ofuscación.Ejemplo de reglas básicasUn archivo proguard-rules.pro típico puede incluir:

# Mantener clases de Cordova
-keep class org.apache.cordova.** { *; }
-keep public class * extends org.apache.cordova.CordovaPlugin

# Evitar eliminación de clases usadas por reflexión
-keep class com.tu.paquete.** { *; }

# Optimizaciones generales
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-optimizationpasses 5
-allowaccessmodification

Nota: Ajusta las reglas según las bibliotecas que uses (por ejemplo, Firebase, Retrofit, etc.), ya que algunas requieren configuraciones específicas para evitar errores en tiempo de ejecución.

Normalmente, se suele generar un archivo en el directorio “platforms/android/cordova-plugin-proguard” llamado [nombre-de-la-app]-build.gradle donde están las reglas a aplicar en proguard a la hora de la compilación:

android {
  buildTypes {
    debug {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'src/main/assets/www/proguard-custom.txt'
    }
    release {
      minifyEnabled true
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }
}

Como vemos la versión de depuración (debug), normalmente, no se aplica ninguna regla. Es en la de producción donde se aplican las reglas. El archivo ‘proguard-rules.pro’ debería existir y estar ubicado en el directorio ‘app’ donde pondremos las reglas, como por ejemplo esta:

-dontwarn com.google.protobuf.java_com_google_android_gmscore_sdk_target_granule__proguard_group_gtm_N1281923064GeneratedExtensionRegistryLite$Loader

Finalmente podremos compilar la versión definitiva de la app. Por ejemplo con esta línea para que nos indique en detalle de todos los problemas que se pudieran detectar:

cordova build --release android --warning-mode=all --gradleArg=-PcdvCompileSdkVersion=35

Como vemos en la línea, también se indica la versión de la SDK con la que queremos compilar.

Recursos adicionales: