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.** { *; }                        对

 

posted on 2017-06-08 20:26  angelshelter  阅读(547)  评论(0编辑  收藏  举报

导航