Uso de Proguard para obfuscar la aplicación Android con las bibliotecas de Dropbox.com
Acabo de crear una aplicación para Android que requiere las bibliotecas API de Dropbox.com. Ahora estoy tratando de construir la aplicación en el modo 'Release' y me gustaría ejecutar proguard en el código con el fin de ofuscarlo. Sin embargo, cada vez que intento ejecutar Proguard, obtengo el siguiente error:
Proguard returned with error code 1. See console Warning: com.dropbox.client2.DropboxAPI: can't find referenced class org.json.simple.JSONArray Warning: com.dropbox.client2.DropboxAPI: can't find referenced class org.json.simple.JSONArray Warning: com.dropbox.client2.DropboxAPI$Entry: can't find referenced class org.json.simple.JSONArray Warning: com.dropbox.client2.DropboxAPI$Entry: can't find referenced class org.json.simple.JSONArray Warning: com.dropbox.client2.RESTUtility: can't find referenced class org.json.simple.parser.JSONParser Warning: com.dropbox.client2.RESTUtility: can't find referenced class org.json.simple.parser.JSONParser Warning: com.dropbox.client2.RESTUtility: can't find referenced class org.json.simple.parser.JSONParser Warning: com.dropbox.client2.RESTUtility: can't find referenced class org.json.simple.parser.ParseException Warning: there were 8 unresolved references to classes or interfaces. You may need to specify additional library jars (using '-libraryjars'), or perhaps the '-dontskipnonpubliclibraryclasses' option. java.io.IOException: Please correct the above warnings first. at proguard.Initializer.execute(Initializer.java:308) at proguard.ProGuard.initialize(ProGuard.java:210) at proguard.ProGuard.execute(ProGuard.java:85) at proguard.ProGuard.main(ProGuard.java:499)
Ya estoy incluyendo la opción '-dontskipnonpubliclibraryclasses' y eso no me está ayudando en absoluto. Intenté incluir la opción '-libraryjars', aunque, podría haber estado utilizando incorrectamente ya que no estoy realmente seguro de cómo estoy destinado a utilizar ese indicador.
- Proguard Parse Error de excepción. Cómo resolverlo
- Nota: android.support.v4.text.ICUCompatIcs: no se puede encontrar la clase referenciada dinámicamente libcore.icu.ICU
- Proguard falla con la versión 25.1.6 de las herramientas de Android
- Cómo proteger la llamada a webservice en Android
- Proguard: no se puede encontrar la clase referenciada
¿Alguien tiene alguna idea de cómo puedo corregir este error? En este momento, no puedo crear mi aplicación mientras lo ejecuto a través de Proguard. Cualquier ayuda es apreciada! ¡Gracias!
- Traducción no captada SimException: dx.rop.cst.CstInterfaceMethodRef no se puede convertir en com.android.dx.rop.cst.CstMethodRef (Proguard)
- Android Roboguice proguard warning
- Error de compilación referenciando archivo build.xml y proguard: "null returned: 1"
- ¿Cómo configurar Proguard en Android Studio?
- Android obfuscate aplicación utilizando proguard mantiene obfuscating frascos de la biblioteca - o es?
- No se puede firmar la versión APK -: app: shrinkReleaseMultiDexComponents FALLED
- Proguard causa un accidente en los servicios de Google Play 'ActivityRecognitionResult getMostProbableActivity
- ¿Detecta si está ProGuarded en tiempo de ejecución?
Cfr. Manual de ProGuard> Solución de problemas> Advertencia: no se puede encontrar la clase referenciada
Com.dropbox parece depender de org.json. En teoría, debe añadir el jar org.json a su directorio de librerías, para que pueda ser procesado e incluido en su aplicación. En la práctica, su aplicación funciona bien sin ella, por lo que puede dejar que ProGuard ignore la dependencia que falta:
-dontwarn org.json.**
o
-dontwarn com.dropbox.**
No debes añadir -libraryjars, porque cualquier jarras que especifiques no estará presente en los dispositivos Android, a menos que de alguna manera logres instalarlos.
Bueno, a través de prueba y error, básicamente, por lo menos tengo una solución. No consideraría esto una "respuesta" real per se, sin embargo, mi problema fue resuelto agregando las líneas siguientes a mi archivo proguard.cfg
.
-libraryjars /lib/dropbox-android-sdk-1.2.1.jar -libraryjars /lib/httpmime-4.0.3.jar -libraryjars /lib/json_simple-1.1.jar -dontwarn com.dropbox.client2.DropboxAPI -dontwarn com.dropbox.client2.DropboxAPI$Entry -dontwarn com.dropbox.client2.RESTUtility
Esperemos que ayude a alguien que se encuentra atrapado con este o un problema muy similar en el futuro.
- Android permission.INTERACT_ACROSS_USERS_FULL
- ¿Puedo hacer que el usuario acepte una exención de responsabilidad legal antes de instalar una aplicación para Android?