您的位置:首页 > 编程语言 > Java开发

解决Java.lang.NoSuchFieldError: POSTING at java.lang.reflect.Method.getDefaultVal

2017-07-12 11:28 423 查看
之前我打包混淆的时候有遇到这个问题,不过如果真的有混淆难以解决的也不要怕,因为现在app加固工具非常的多,而且也很稳定不混淆用加固工具也是可以的。

下面我就说一下这个问题,这个问题提示上就已经说明了反射问题,你混淆了一些带有IOC(反转控制或依赖注入)的是不能进行混淆的,

比如:RxJava,Dagger2,Gson,JackSon,FastJson,ButterKnife和一些依赖注入工具等,还有一个容易被忽略的是EventBus3.0,这个也用了ioc。

解决方案就是:保证他们不被混淆,

举例:

#跳过它们不被混淆

-dontwarn com.sun.** 

#保持他们的类不被混淆

-keep class com.sun.** { *;}

具体就是:

#xx是你依赖的路径前缀:如'com.squareup.okhttp3:okhttp:3.4.1'的前缀就是:squareup.okhttp3 然后:-dontwarn com.squareup.okhttp3 .** 这样就跳过了它被混淆的可能

-dontwarn com.XX.** 

#xx是你依赖的路径前缀,如上例子所示。

-keep class com.XX.** { *;}  

这样就可以解决无法混淆的问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐