Android-proguard理解

2017-10-12  本文已影响0人  hyzhang98

混淆

什么是混淆

Android

#配置默认的混淆规则
proguardFile getDefaultProguardFile('proguard-android.txt')
#使用自己的proguard文件
proguardFile 'proguard-project.txt'

默认的proguard-android.txt里面规定了Activity名字和生命周期方法不会混淆,View的getter和setter也不会混淆,其实是因为Manifest里面要注册Activity,如果你混淆Activity成了其他名字,那Manifest里面不就找不到了吗,还有就是在View的属性动画里我们在动画结束时会改变View的属性,具体实现就是在animation结束的时候通过反射,寻找相应的prefix为set的方法,通过setter方法进行属性设置,所以也保留了而没有混淆,其实本质上这也是因为反射而导致的不可混淆。保留不混淆的语法是

-keepclass xxx
-keepclassmembers xxx
#...
#代表指定这个类某些方法被删除了也没什么影响,可以用到这个的地方比如说Log
-assumenosideeffects class xxx {xxx}
#进行n次优化过程,n可以自己指定,如果某次优化之后体积和上次比较没有变化那么无论如何都会停止优化
-optimizationpasses n
#禁止优化
-dontoptimize
上一篇 下一篇

猜你喜欢

热点阅读