前言:关于如何开启混淆,在哪个文件写混淆代码,混淆代码的规则我这里不做赘述,其它文章一堆,我这里只提几个问题。
1.Android项目为什么要开启代码混淆,它和360那种apk加固有什么区别与联系?如果我使用apk加固是不是可以不写混淆代码?
答:开启混淆防止反编译,缩减体积、优化,apk加固可以替代混淆,且功能更强大。
2.在proguard.pro文件中写混淆代码时,哪些不需要混淆,哪些需要混淆,依据是什么?keep关键词是让代码执行混淆还是不执行混淆?
答:依据是看混淆后项目是否能够正常运行,不影响运行的就可以混淆,如:成员变量和方法,而注解和静态类混淆后会报错,所以要keep起来不混淆。
3.以下场景一般不需要参与混淆,需要写到混淆文件中。
1)使用了自定义控件那么要保证它们不参与混淆
2)使用了枚举要保证枚举不被混淆
3)对第三方库中的类不进行混淆
4)运用了反射的类也不进行混淆
5)使用了 Gson 之类的工具要使 JavaBean 类即实体类不被混淆
6)在引用第三方库的时候,一般会标明库的混淆规则的,建议在使用的时候就把混淆规则添加上去,免得到最后才去找
7)有用到 WebView 的 JS 调用也需要保证写的接口方法不混淆,原因和第一条一样
8)Parcelable 的子类和 Creator 静态成员变量不混淆,否则会产生 Android.os.BadParcelableException 异常
网友评论