解决android应用引用第三方jar包混淆打包报错
来源:互联网 发布:大麦盒子如何安装软件 编辑:程序博客网 时间:2024/04/30 13:09
1、project.properties文件中
取消这行注释
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
2、proguard-project.txt中
-libraryjars libs/ + 引用的jar包全名
例如:-libraryjars libs/android-support-v4.jar
- -dontwarn com.baidu.**
- -keep class com.baidu.** { *;}
- -dontwarn com.lakala.**
- -keep class com.lakala.** { *;}
- -dontwarn com.lingtu.**
- -keep class com.lingtu.** { *;}
- -dontwarn com.autonavi.**
- -keep class com.autonavi.** { *;}
混淆以后,出现错误,每次看报错信息,连方法都难找到。虽说有属性对应的txt,但是有些混淆的方法名是一模一样,所以找起来相当麻烦。
下面就把我遇见的问题分享出来吧。
第一个,类型转换错误,因为我用的泛型,所以在调用某些方法的时候,会出现这种错误,后面在混淆配置文件加了一个过滤泛型的语句,如下。
-keepattributes Signature
过后,就没有出现类似的类型转换错误。
第二个,空指针异常,这个错误是我对比前面的错误来说,所用的时间比较短,开始是找不到方法到底是哪个(原因是上面提到的混淆后方法名相同),所以就把这个类里面的所有方法都过滤掉,这样我没用多少时间,也就找到了具体的方法,可还是不明白原因,后面发现了其中的一个if判断,我利用反射筛选方法,关键字是“get”,突然我就震精了,大叫一声——soga,原来我 model的 set/get方法名全部都被混淆了,所以筛选不到方法,返回的也就是null值,自然下面用到这个方法的返回值就会抛出空指针异常。
解决方法:把 model包下面的所有类,全部过滤掉。
总结:如要用到反射,反射一般就会利用到泛型,所以必须要把泛型的全部过滤掉,如果有根据变量名或者方法名判断的,记得所在的类需过滤掉,之中还有用到 annotation的地方,要加入一行代码,如下:
-keepattributes *Annotation*
这样就能过滤掉所有的annotation,否则也会抛出空指针异常。
- 解决android应用引用第三方jar包混淆打包报错
- android 第三方jar包 混淆打包
- Android 混淆打包不混淆第三方jar包
- Android 混淆打包不混淆第三方jar包
- Android调用webservice引用第三方jar包ksoap2混淆打包问题处理
- android引入第三方jar包后打包报错
- android 打包时不混淆第三方的jar包
- Android Studio混淆打包忽略第三方jar包配置
- android studio 将引用第三方jar和.so的项目打包jar并混淆
- android studio 将引用第三方jar和.so的项目打包jar并混淆
- android混淆, 忽略第三方jar包
- Android不混淆第三方jar包
- Android Studio 将引用第三方jar包的android工程打包成jar包
- Android打包jar给第三方引用
- Android 关于引用jackson的jar包混淆报错或打包后运行报错崩溃
- Android 关于引用jackson的jar包混淆报错或打包后运行报错崩溃
- android 代码混淆 不混淆第三方jar包
- android 代码混淆 不混淆第三方jar包
- aidl用到的设计模式--Proxy代理模式
- PAT 1046. Shortest Distance
- 西北狼
- Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
- 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比(一家之言)
- 解决android应用引用第三方jar包混淆打包报错
- android高分段进阶攻略(1)传感器
- 一个通用并发对象池的实现
- 通达 生产过程管理软件 生产进度管理软件 生产流程管理软件 车间现场管理软件
- 利用Java Apache POI 生成Word文档
- JSON--Java与AJAX(Jquery)
- linux内核之红黑树
- IT人-不要一辈子靠技术生存
- 传统企业软件必死