Cordova android 5.1.1 APK ofuscación con proguard confusión

Con herramientas como dex2jar y jdgui2 es muy fácil inspeccionar el contenido del APK.

Estamos tratando de usar Proguard en nuestro proyecto Cordova para "proteger" algunas clases que contienen información que queremos mantener en secreto (Principalmente claves para descifrar algún contenido que intentamos proteger para nuestro cliente).

No podemos hacerlo bien. La aplicación se bloquea o no se obscurece.

Agregamos a nuestro build.gradle:

buildTypes { release { signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } 

Nuestro proguard.pro contiene:

 -keep class !com.smartmobilesoftware.** ( *; } 

Smartmobilesoftware es un complemento inAppPurchases.

En ese paquete hemos modificado algunas clases, lo que funciona muy bien sin proguard.

Encontré el siguiente "Proguard support missing": https://issues.apache.org/jira/browse/CB-9269

Aquí Joe Bowser afirma lo siguiente: "Está bien, no debes usar ProGuard con Cordova, o al menos, no hay una buena razón para usarlo, ya que no puedes usarlo con minifyEnabled, que es lo que realmente hace que ProGuard funcione correctamente. Puesto que Córdoba usa Reflexión por todas partes, esta es una buena manera de volar a Cordova sin un archivo proguard-rules.pro ".

Intentamos evitar este problema diciendo a proguard que TODAS las clases deben ser dejadas intactas excepto las del com.smartmobilesoftware (-keep class! Com.smartmobilesoftware. ** (*;))

No estoy seguro si esto es un problema witih nuestro código (pero el código funciona bien sin proguard), el complemento, o proguard en sí.

No vemos errores significativos.

Lanzamos aplicaciones antes de construir con Cordova 2.2.0, que utiliza ANT y proguard y otro plugin, que funcionó bien. Así que nos preguntamos si Cordove es cambiado con respecto a proguard.

¿Alguien puede arrojar algo de luz sobre este tema?

Parece que el código en el paquete com.smartmobilesoftware implementa un complemento Cordova. En este caso necesitas mantener por lo menos unas cuantas clases más, de lo contrario Cordova no las encontrará correctamente en tiempo de ejecución (para un reciente lanzamiento de Cordova):

 -keep class * extends org.apache.cordova.CordovaPlugin 

Aplicación Cordova se bloqueará después de la ofuscación debido a la actividad principal y las clases cordova se obfuscate. Así que en tiempo de ejecución no se pudo crear la vista web y la aplicación se bloqueará.

 To resolve this you have to add : -keep class org.apache.cordova.** { *; } -keep public class * extends org.apache.cordova.CordovaPlugin 
  • Se rehusó a cargar el script porque infringe la siguiente directiva de política de seguridad de contenido
  • Cordova no instala realmente la aplicación en el dispositivo Android
  • La conexión de Cordova al servidor no tuvo éxito
  • Mostrar notificación de inserción múltiple en la barra de estado en android de Córdoba
  • Código de versión de la aplicación de Android que cambia cuando subo a jugar cordova tienda
  • Cómo implementar la aplicación phonegap directamente en el dispositivo
  • El evento "touchmove" en el sistema android: Transformer Prime
  • ¿Son todos los permisos necesarios para PhoneGap en Android?
  • Error al inicializar Cordova: Clase no encontrada
  • Cómo llamar a la función javascript de la actividad de Android
  • Error: spawn EACCES al intentar construir Ionic app en Ubuntu 15.10
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.