最近学习了一下Kotlin,就做了一个项目练练手,提升熟练度,顺便使用到了AndroidX,在打包的时候混淆了一下代码,结果运行后出现了一个错误:
java.lang.NoSuchFieldException:No field mGoButton in class Landroidx/appcompat/widget/SearchView;
第一眼看上去,嗯,我的SearchView 被混淆了然后找不到了,于是添加了一条混淆规则
-keep class androidx.appcompat.widget.SearchView { ImageView mGoButton;}
再次运行,还是出现了这个错误,这不对啊不应该啊,我都添加规则了啊,我以前就是这么混淆的都么得问题啊,咦,等等,我以前好像没有用到AndroidX,难道是这个原因?很有可能啊,我再次看了一下我混淆的规则:
-keep class android.support.** { *; }
-keep interface android.support.** { *; }
-dontwarn android.support.**
这是以前support包的(这咱也不敢删啊,万一删了出问题了咋整),没有添加AndroidX的啊,需要再添加:
-keep class com.google.android.material.** {*;}
-keep class androidx.** {*;}
-keep public class * extends androidx.**
-keep interface androidx.** {*;}
-dontwarn com.google.android.material.**
-dontnote com.google.android.material.**
-dontwarn androidx.**
最后运行一把,欧克,no 爬波冷