本文记录如何进行安卓Libray工程混淆经验。安卓混淆上的肯定是大名鼎鼎的 ProGuard, 那我们开始吧。
1. ProGuard基础
1.1 ProGuard基本配置
网上关于混淆的学习记录文章已经很多了,这边我整理出了一些基本的配置选项
# 指定代码的压缩级别,值在0-7之间。一般设置5足矣
-optimizationpasses 5
# 打印混淆信息
-verbose
# 代码优化选项,不加该行会将没有用到的类删除,发布的是代码库这个选项需要
# 在做混淆之前最开始会默认对代码进行压缩,为了增加反编译的难度可以选择不压缩
-dontshrink
# 保留参数的名称和方法,该选项可以保留调试级别的属性。
-keepparameternames
# 过滤泛型,出现类型转换错误时再启用这个。目前的项目暂时无泛型类型,我先注释了
#-keepattributes Signature
# 保护代码中的Annotation不被混淆
-keepattributes *Annotation*
# 指定不去忽略非公共的库的类的成员
-dontskipnonpubliclibraryclassmembers
# 指定不去忽略非公共的库类(不跳过library中的非public的类)
-dontskipnonpubliclibraryclasses
如果有不合理或更好的选项记得告诉我哟?非常感谢
1.2 Proguard 关于Keep的关键字
关键字 | 描述 |
---|---|
keep< |