proguard-rules.pro混淆导jar包

Posted angelshelter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了proguard-rules.pro混淆导jar包相关的知识,希望对你有一定的参考价值。

前记:

    买了一个《精通android Studio》本来最想看的是关于混淆导jar包的,哪知道没有,有点小失望。

 

好吧,自己来。

 

    在用Android Studio开发的时候,把minifyEnabled改true后,可以导出main.jar包。用解压软件打开,发现总有android.support这个包,这个应该是系统支持包吧。

如果不做处理的话,它里面的类都会被混淆,所以为了安全起见,还是加上

-keep class android.support.** { *; }

我之前就没注意,在打含有okhttp的混淆包的时候,就出错了(:app:transformClassesAndResourcesWithProguardForRelease)。

原来okhttp里面用到了javax.annotation.Nullable和javax.annotation.ParametersAreNonnullByDefault这两个类,找不到。

 

1   -dontwarn javax.annotation.Nullable
2   -keep class javax.annotation.Nullable {*; }

语句1和语句2不能相互替代,语句1用于jar包和外部依赖类,语句2用于自己写的类

 

-dontwarn   缺省proguard会检查每一个引用是否正确,但是第三方库里面往往有些不会用到的类,没有正确引用。如果不配置的话,系统就会报错。

 

解法解读

-dontwarn abcdef.cc.**-dontwarn abcdef.cc.**  { *; }                错
-keep class okio.** { *; }                        对

 

以上是关于proguard-rules.pro混淆导jar包的主要内容,如果未能解决你的问题,请参考以下文章

Android混淆规则--proguard-rules.pro

jar is specified twice.

Android之app混淆深入分析-层层解析解决开发中痛点

安卓 代码混淆与打包

android studio 打正式包注意事项

Android代码混淆