安卓代码混淆问题出现的报错,在此记录:引用包冲突、混淆规则错误
报错1 相同包名冲突-org.xmlpull.v1
java.lang.NoSuchMethodError: No static method e()Lorg/xmlpull/v1/XmlPullParserFactory; in class Lorg/xmlpull/v1/XmlPullParserFactory; or its super classes (declaration of 'org.xmlpull.v1.XmlPullParserFactory' appears in /system/framework/core-libart.jar) #混淆报错 需要添加 -dontwarn org.xmlpull.v1.XmlPullParser -dontwarn org.xmlpull.v1.XmlSerializer -keep class org.xmlpull.v1.* {*;} // 添加依赖时 implementation( 'com.github.siyamed:android-shape-imageview:0.9.3') { exclude group: 'org.xmlpull.v1' }
报错2-成员变量名称被混淆,反编译错误-rx.internal.util.unsafe
##rxjava的混淆配置 -dontwarn java.util.concurrent.Flow* -dontwarn sun.misc.** -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { long producerIndex; long consumerIndex; }
stackTrace: java.lang.InternalError
at rx.internal.util.o.n0.a(UnsafeAccess.java:109)
at rx.internal.util.o.k.<clinit>(MpmcArrayQueue.java:57)
at rx.internal.util.f.a(ObjectPool.java:143)
at rx.internal.util.f.<init>(ObjectPool.java:60)
at rx.internal.util.f.<init>(ObjectPool.java:39)
at rx.internal.util.j$a.<init>(RxRingBuffer.java:280)
at rx.internal.util.j.<clinit>(RxRingBuffer.java:280)
at rx.c.a(Observable.java:6209)
...
Caused by: java.lang.NoSuchFieldException: No field consumerIndex in class Lrx/internal/util/o/k; (declaration of 'rx.internal.util.o.k' appears in /data/app/包名-QSgLmq8jVkFAvHzWwKnNoQ==/base.apk!classes3.dex)
at java.lang.Class.getDeclaredField(Native Method)
at rx.internal.util.o.n0.a(UnsafeAccess.java:106)
... 24 more