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).
- ¿Cómo verificar los datos de POST se envía desde la aplicación de Android con la firma SHA1 correcta?
- ¿Garantiza Proguard para proporcionar el mismo mapeo si no ha cambiado ninguna fuente?
- Proguard: excluir el frasco externo de la biblioteca de la ofuscación
- Implementación de Proguard Security con mi APK
- Cómo generar mapping.txt con Eclipse?
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???
- Proguard busca los números de línea que faltan
- Problemas de Android Proguard
- Android: Proguard no compiló con el archivo jar de Joda Time
- Android - ¿Cómo comprobar la ofuscación Proguard ha funcionado?
- Habilitar proguard sólo para eliminar el código no utilizado
- Proguard, clase de biblioteca depende de la clase del programa
- Proguard warning: la configuración mantiene el punto de entrada ... pero no la clase descriptor
- Howto in eclipse depura el archivo apk ofuscado por Proguard
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.