感谢大佬们:
1、https://www.cnblogs.com/welhzh/p/6017434.html,这是个厉害的大佬,总结的很到位
2、https://blog.csdn.net/qq_35064774/article/details/52871521,这个有用的地方在此:
首先我们要知道项目引入了多少jar包。
在AS中也非常简单。打开build.gradle
,找到dependencies
,比如我的项目中是这样的:
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile files('libs/RootTools.jar')
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:support-v4:23.4.0'
compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'com.squareup.okio:okio:1.10.0'
compile 'com.google.code.gson:gson:2.7'
compile 'com.android.support:support-vector-drawable:23.4.0'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha9'
testCompile 'junit:junit:4.12'
}
在这里可以清晰的看到compile
中引用的库,除了官方的support
库,其他都是需要自己在配置文件中取消混淆的。
接着是自定义文件配置。打开proguard-rules.pro
,在里面加入-keep class com.xxx.**{*;}
这样的忽略指定包名的语句。比如我的配置如下:
-keep class com.squareup.okio.**{*;}
-keep class com.squareup.okhttp3.**{*;}
-keep class com.google.code.gson.**{*;}
-keep class com.squareup.okio.**{*;}
-keep class com.stericson.RootTools.**{*;}
当然这样配置之后,可能你的项目依旧报错,那可能是你也使用了okio
库。只需要在附加上这样一句。
-dontwarn okio.**
3、 https://blog.csdn.net/qduningning/article/details/41441387,这个解决了打包警告问题:
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-ignorewarnings
4、https://blog.csdn.net/lvxiangan/article/details/17911623,这个解决了这个问题:
本以为需要避免混淆libs目录下的jar,查了一天命令,试了又试,没用,最后看到了第一位大佬说的,才知道不用管那些,也借助第一位大佬的文章,做了避免本地实体类混淆的命令,最后搞定,一天时间就这么没啦!