Phonegap 2.4 Configuración de Proguard para Android

He actualizado una versión de Phonegap (Cordova) 2,0 a 2,4 y todo estaba funcionando bien en dev hasta que llegué a probar la versión final de apk. Lo que estoy encontrando, después de un montón de tiempo perdido, es que por alguna razón ahora, cuando ejecuto la construcción de mi config proguard es romper la estructura del teléfono de alguna manera que significa que cuando se ejecuta el deviceready nunca se llama. Parece que no hay errores al construir, ni correr ni nada por lo que puedo ver, pero supongo que algo está fallando en silencio en el cordova js como no estoy recibiendo errores de compilación / registro en el dispositivo.

Como digo esto es sólo cuando se ejecuta el Proguard obfs en el proceso de construcción. Si apago Proguard todo funciona bien. Volví todo mi código de vuelta a 2.0 para estar seguro y que está todo bien así que en algún lugar a lo largo del camino ha habido un cambio de stuble que aparentemente no está documentado / o nadie ha golpeado todavía (2.4 sólo salió hace unas semanas – en Hora de escritura 26 de febrero de 2013).

Mi configuración de Proguard contiene lo siguiente para phonegap (así como alguna otra configuración estándar)

-keep public class * extends com.phonegap.api.Plugin -keep public class * extends org.apache.cordova.api.Plugin -keep public class org.apache.cordova.DroidGap -keep public class org.apache.cordova.** -keep public class org.apache.** -dontwarn android.webkit.* -dontwarn org.apache.** 

Y decompiling el dex no parece lanzar ninguna luz – todo parece bien de un vistazo …

¿¿¿Alguien tiene alguna idea???

Intenta reemplazar los ajustes de Cordova "keep" en tu proguard-project.txt con la siguiente línea, la cual debe mantener todas las clases, campos y métodos de Córdoba, tanto públicos como privados (y por lo tanto reenable deviceready):

-mantener la clase org.apache.cordova. ** {*; }

Entonces sólo tienes que incluir tu clase (es) (presumiblemente extendiendo CordovaPlugin, no sólo Plugin) por ejemplo

Pre-v3:

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

V3 +:

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

Phonegap Plugins están siendo excluidos de la APK final, supongo. Cordova.js probablemente ni siquiera existe para dar errores.

  • El método debe anularse en si se llama "en Android Studio
  • ¿Cómo puedo decirle a ProGuard que mantenga mi función que se utiliza para onClick?
  • Utilizando Otto, el método sólo se suscribe si lo llamo directamente a otra parte
  • Android Studio - ProGuard "java.io.IOException ... bin \ classes (Ningún archivo o directorio)"
  • Android studio, donde está el archivo de mapeado proguard
  • Errores de Proguard al exportar el proyecto de Android después de actualizar a ADT 20
  • Proguard con Autovalue
  • Proguard y error
  • No se pudieron determinar las dependencias de la tarea ': app: crashlyticsStoreDeobsDebug' si habilito el proguard
  • Proguard no ignora las bibliotecas referenciadas
  • ¿Cómo se hace una versión de lanzamiento androide firmado y obfuscated desde dentro de eclipse?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.