自动更新混淆后无法使用怎么办
答案:1 悬赏:10 手机版
解决时间 2021-02-28 21:52
- 提问者网友:我们很暧昧
- 2021-02-28 16:23
自动更新混淆后无法使用怎么办
最佳答案
- 五星知识达人网友:長槍戰八方
- 2021-02-28 16:40
请先参考安卓平台跟混淆相关的问题:
混淆后出错(为什么用proguard混淆后,友盟AndroidSDK的一些功能不可用?)
如果您的应用使用了混淆, 请添加
-keepclassmembers class * {
public(org.json.JSONObject);
}
这是由于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.** { *; }
混淆后出错(为什么用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.** { *; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯