解决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.** { *;}
这样就可以解决无法混淆的问题
下面我就说一下这个问题,这个问题提示上就已经说明了反射问题,你混淆了一些带有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.** { *;}
这样就可以解决无法混淆的问题
相关文章推荐
- Hibernate HQL view join: java.lang.NullPointerException at org.hibernate.util.ReflectHelper.getConst
- java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0
- java.lang.NoSuchMethodException: * at java.lang.Class.getMethod(Class.java:1605) at
- java.lang.reflect.Method (java反射机制)
- java.lang.reflect.InvocationTargetException.getTargetException()异常解决
- java.lang.NullPointerException at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked()
- Caused by: java.lang.NoClassDefFoundError at org.hibernate.proxy.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:
- java.lang.Class.getDeclaredMethod()方法详解
- Java.lang.reflect.Method invoke
- Java.lang.reflect.Method invoke方法 实例
- JAVA反射系列之Method,java.lang.reflect.Method的使用。
- Spring启动时报异常:No String constructor found on type [java.lang.reflect.Method]
- 严重: Parse error in application web.xml file at jndi:/localhost/ipws/WEB-INF/web.xml java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml
- Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationT
- Java.lang.reflect.Method invoke方法 实例
- Java.lang.reflect.Method invoke方法 实例
- How to solve "java.lang.VerifyError: Expecting a stackmap frame at branch target 6 in method"
- Disabling contextual LOB creation as createClob() method error : java.lang.reflect.InvocationTargetE
- Java.lang.reflect 下的Class,Method,Field的使用实例
- Error: java.lang.NullPointerException at java.util.concurrent.ConcurrentHashMap.get