前言
今天给大家分享一个只混淆自己的项目代码而不混淆所有第三方SDK的方法。
没错,是所有的第三方SDK都不进行混淆,无论任何第三方,都不需要动混淆配置,也许你认为这种需求很奇葩,但是存在即合理。
方案
看了一下Proguard官网,发现原来是支持指定多个目录混淆的,重点是有个排除算法即感叹号
例如你有:
com.a.a.** ,
com.b.b.** ,
com.<三方SDK>.** 的等
现在只想混淆com.a.a.** 和com.b.b.** ,那么你写成如下即可
-keep class !com.a.a.**,!com.b.b.**,** {*;}
翻译过来就是keep住除了包名是com.a.a.** 或 com.b.b..** 以外所有类及类内部相关。
效果
以AndroidUtilCode(包名为com.blankj.utilcode.*)为例,
默认混淆效果
默认混淆.png
不混淆所有SDK效果
不混淆所有SDK效果.png
使用注意:如果你项目用的第三方特别杂乱、特别多,不混淆的话会导致包体积增大很多。