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

之前我打包混淆的时候有遇到这个问题,不过如果真的有混淆难以解决的也不要怕,因为现在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.** { *;}  


这样就可以解决无法混淆的问题

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页