Problem with Android simplexml.jar proguard

I'm just trying to parse a simple XML document with simple-xml-2.6.jar.I placed this jar in a folder called lib, then add it to the libraries. Then I will try to skip this jar, so the code in proguard.cfg is as below:

-optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -libraryjars lib/simple-xml-2.6.jar -dontwarn javax.xml.stream.events.** -dontwarn javax.xml.stream.** -keeppackagenames com.wang.demo -keep public class org.simpleframework.** { *; } -keep public class org.simpleframework.xml.core.** { *; } -keep public class org.simpleframework.* { *; } -keep public class org.simpleframework.xml.core.* { *; } -keep public class org.simpleframework.* -keep public class org.simpleframework.xml.core.* -keep public class org.simpleframework.** { public protected *; } -keep public class org.simpleframework.xml.core.** { public protected *; } -keep public class javax.xml.** { *; } -keepattributes *Annotation* -dontskipnonpubliclibraryclasses -keep public class * extends com.wang.demo.CommonResponse { *; } -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } 

I want to cover all Exceptions, but logcat shows:

 08-25 17:06:56.886: WARN/System.err(8745): java.lang.NoSuchMethodException: m(dm,Element) 08-25 17:06:56.886: WARN/System.err(8745): at java.lang.Class.getMatchingConstructor(Class.java:643) 08-25 17:06:56.886: WARN/System.err(8745): at java.lang.Class.getConstructor(Class.java:472) 08-25 17:06:56.886: WARN/System.err(8745): at org.simpleframework.xml.core.at.a(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.be.a(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.qb(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.qa(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.ba(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.b.<init>(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.av.a(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.dn.b(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.ar.h(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.ar.g(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.ed.a(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.az.a(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.Persister.read(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.Persister.read(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.Persister.read(Unknown Source) 08-25 17:06:56.897: WARN/System.err(8745): at org.simpleframework.xml.core.Persister.read(Unknown Source) 08-25 17:06:56.907: WARN/System.err(8745): at org.simpleframework.xml.core.Persister.read(Unknown Source) So anyone help me fix it? 
+4
source share
1 answer

I have the same problem.

I think this is because proguard changed the name of the Annotation attribute. For example, an annotation attribute was defined as:

 public @interface Attribute { public String name() default ""; public String empty() default ""; } 

But after obfuscation he becomes:

 public @interface Attribute { public abstract String a(); public abstract boolean b(); } 

Then, at runtime, the code cannot get the attribute name through reflection.

+2
source

Source: https://habr.com/ru/post/1368925/


All Articles