自動更新混淆後無法使用怎麼辦
- 2023-01-08
混淆後出錯(為什麼用proguard混淆後,友盟AndroidSDK的一些功能不可用?)
如果您的應用使用了混淆, 請新增
-keepclassmembers class * {
public
}
這是由於SDK中的部分程式碼使用反射來呼叫建構函式, 如果被混淆掉, 在執行時會提示“NoSuchMethod”錯誤。
另外,由於SDK需要引用匯入工程的資原始檔,通過了反射機制得到資源引用檔案R。java,但是在開發者透過proguard等混淆/最佳化工具處理apk時,proguard可能會將R。java刪除,如果遇到這個問題,請在proguard配置檔案中新增keep命令如:
-keep public class [您的應用包名]。R$*{
public static final int *;
}
把[您的應用包名] 替換成您自己的包名,如com。yourcompany。example。
如果您使用了雙向反饋功能,還需要新增下面程式碼,以免我們自定義的UI被混淆:
-keep public class com。umeng。fb。ui。ThreadView {
}
如果使用的是自動更新2。7。0版本,則需要加上以下混淆程式碼:
-dontwarn okio。**
-dontwarn com。squareup。wire。**
-keep class okio。** {*;}
-keep class com。squareup。wire。** {*;}
如果仍存在問題,可以再做如下操作:
# 新增第三方jar包
-libraryjars libs/umeng-sdk。jar
# 以下類過濾不混淆
-keep public class * extends com。umeng。**
# 以下包不進行過濾
-keep class com。umeng。** { *; }
上一篇:看日食的時候要做什麼準備