反编译过别人的jar或者apk的小伙伴肯定会发现大量的类名,方法名,变量名等等,都被替换成了a,b,c,d之类的字母,造成难以阅读。代码混淆是保障我们代码安全的一种有力手段,但是并不是所有代码都需要被混淆的,不恰当的混淆可能导致项目无法正常运行。下面收集一些开发当中常用的一些三方依赖的混淆代码。
1.ButterKnife
# Retain generated class which implement Unbinder.
-keep public class * implements butterknife.Unbinder { public <init>(...); }
# Prevent obfuscation of types which use ButterKnife annotations since the simple name
# is used to reflectively look up the generated ViewBinding.
-keep class butterknife.*
-keepclasseswithmembernames class * { @butterknife.* <methods>; }
-keepclasseswithmembernames class * { @butterknife.* <fields>; }