Error de ProGuard para Android con org.xmlpull.v1.XmlPullParser
Cuando mi aplicación se crea con ProGuard, falla con el siguiente mensaje. Utilizo un proguard.cfg predeterminado generado por SDK de Android con algunos -ibibraryjars. ¿Qué puedo hacer por él?
[2011-03-17 09:27:04 - MyProject] Proguard returned with error code 1. See console [2011-03-17 09:27:04 - MyProject] Note: there were 4247 duplicate class definitions. [2011-03-17 09:27:04 - MyProject] Warning: library class android.content.res.XmlResourceParser extends or implements program class org.xmlpull.v1.XmlPullParser [2011-03-17 09:27:04 - MyProject] Warning: library class android.content.Intent depends on program class org.xmlpull.v1.XmlPullParser [2011-03-17 09:27:04 - MyProject] Warning: library class android.graphics.drawable.AnimationDrawable depends on program class org.xmlpull.v1.XmlPullParser [2011-03-17 09:27:04 - MyProject] Warning: library class android.graphics.drawable.BitmapDrawable depends on program class org.xmlpull.v1.XmlPullParser [2011-03-17 09:27:04 - MyProject] Warning: library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser [2011-03-17 09:27:04 - MyProject] Warning: library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser [2011-03-17 09:27:04 - MyProject] Warning: library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser [2011-03-17 09:27:04 - MyProject] Warning: library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser [2011-03-17 09:27:04 - MyProject] Warning: library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser [2011-03-17 09:27:04 - MyProject] You should check if you need to specify additional program jars. [2011-03-17 09:27:04 - MyProject] Warning: there were 9 instances of library classes depending on program classes. [2011-03-17 09:27:04 - MyProject] You must avoid such dependencies, since the program classes will [2011-03-17 09:27:04 - MyProject] be processed, while the library classes will remain unchanged. [2011-03-17 09:27:04 - MyProject] java.io.IOException: Please correct the above warnings first. [2011-03-17 09:27:04 - MyProject] at proguard.Initializer.execute(Initializer.java:321) [2011-03-17 09:27:04 - MyProject] at proguard.ProGuard.initialize(ProGuard.java:211) [2011-03-17 09:27:04 - MyProject] at proguard.ProGuard.execute(ProGuard.java:86) [2011-03-17 09:27:04 - MyProject] at proguard.ProGuard.main(ProGuard.java:492)
Aparentemente, org.xmlpull.v1.XmlPullParser no es una clase de programa. He actualizado ProGuard a la versión más reciente (4.6), pero tienen las mismas advertencias.
- EventBus y Proguard: No se pudo enviar el evento
- Proguard: IllegalArgumentException - Error inesperado al evaluar la instrucción
- Problemas con ProGuard y AdMob
- ¿Por qué ProGuard mantiene el método onCreate ()?
- Cómo decir Proguard para ofuscar nombres de clase
- Excluir paquetes de proguard
- Mantener los métodos Java llamados desde Android JNI
- Android - ¿Cómo comprobar la ofuscación Proguard ha funcionado?
- Cómo mantener todos los métodos en una clase con ProGuard
- No se puede obtener jar biblioteca para trabajar con Android y Proguard
- Proguard ParseException: "Esperando que la palabra clave 'allowhrinting', 'allowoptimization' o 'allowobfuscation' antes de 'includedescriptorclasses'" on -Keep
- Proguard busca los números de línea que faltan
- Habilitar proguard sólo para eliminar el código no utilizado
Agregue esta línea a proguard-project.txt
-dontwarn org.xmlpull.v1.**
Y esta línea a project.properties
proguard.config=proguard-project.txt
He resuelto esto utilizando esta configuración en el archivo proguard:
-dontwarn org.kobjects.** -dontwarn org.ksoap2.** -dontwarn org.kxml2.** -dontwarn org.xmlpull.v1.** -keep class org.kobjects.** { *; } -keep class org.ksoap2.** { *; } -keep class org.kxml2.** { *; } -keep class org.xmlpull.** { *; } -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontoptimize -dontpreverify
Todavía no tengo la solución para proguard ejecutar a través de eclipse para android, pero si ejecuta proguard manualmente desde la línea de comandos, puede poner lo siguiente en su proguard.cfg
:
-basedirectory /home/pjv/workspace/collectionista-repo/collectionista-main -injars /tmp/android_4500371803543847111.jar -injars libs/joda-time-1.6.jar(!META-INF/MANIFEST.MF) -injars libs/FlurryAgent.jar(!META-INF/MANIFEST.MF) -injars libs/veecheck-2.0.jar(!META-INF/MANIFEST.MF) -injars libs/commons-lang-2.4.jar(!META-INF/MANIFEST.MF,!META-INF/NOTICE.txt,!META-INF/LICENSE.txt) -injars libs/OIAbout-lib-temporary.jar(!META-INF/MANIFEST.MF) -injars libs/libGoogleAnalytics.jar(!META-INF/MANIFEST.MF) -injars libs/xstream-1.3.1.jar(!META-INF/MANIFEST.MF) -injars libs/ZQL_custom.jar(!META-INF/MANIFEST.MF) -injars libs/xpp3_min-1.1.4c.jar(!META-INF/MANIFEST.MF) -injars libs/GoogleAdMobAdsSdk-4.1.0.jar(!META-INF/MANIFEST.MF) -injars libs/bugsense-trace.jar(!META-INF/MANIFEST.MF) -outjars /tmp/android_1348923171424559204.jar -libraryjars /opt/android-sdk/android-sdk-linux_x86-1.6_r1/platforms/android-12/android.jar(!org/xmlpull/v1/XmlPullParser.class,!org/xmlpull/v1/XmlPullParserException.class)
Observe cómo se filtra XmlPullParser.class
desde el jar API de Android.
No se preocupe por las advertencias relacionadas con XmlPullParser
todavía. Corrija los errores y otras advertencias primero, y si es necesario, use -ignorewarnings
en su proguard.cfg
.
De acuerdo con el registro parcial que proporciona, la clase de ejecución de Android org.xmlpull.v1.XmlPullParser ha terminado en su código de programa. Debe asegurarse de que no esté presente en bin / classes o en algún jar en lib , porque ya está presente en la biblioteca jar android.jar.
Además, tiene 4247 definiciones de clase duplicadas. Esto es probablemente debido a la especificación de "algunos -ibraryjars" como usted menciona. Supongo que estos frascos de la biblioteca ya están incluidos automáticamente por el script de compilación, por lo que no debe especificar de nuevo.
Creo que su paquete jar incluye XmlPullParser
clase, y android.jar también incluyen esto. Así que puede quitar las clases org.xmlpull.*
En el paquete jar, y volver a crear.
Para mí podría solucionarlo quitando mi build.gradle modificado anterior
Quite:
minifyEnabled true shrinkResources true
Y volvió al ajuste original
minifyEnabled false
- Deshabilitar la revisión ortográfica de los nombres de los campos en Android Studio
- Kotlin – lateinit VS ¿Alguna? = Nulo