最近學習了一下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 爬波冷