首页 > 代码库 > android 混淆基本知识
android 混淆基本知识
官网介绍:https://www.guardsquare.com/en/proguard/manual/introduction
android 开发文档:https://developer.android.com/studio/build/shrink-code.html
1.混淆的基本原理
android平台的混淆原理简单来说就是把代码中原来有具体含义的包名,类名,变量名,方法名等名称全部替换成按顺序排列的无意义的英文字母a、b、c….这样代码结构没有变化,还可以运行得到一样的结果,并且就算代码被反编译出来,别人很难弄懂代码的架构和具体意思。
2.混淆步骤
a.打开
minifyEnabled 为true
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
}
}
b.android studio 中自定义文件
在文件 工程\app\proguard-rules.pro中自定义。
不混淆 ScrollView类中自定义的public print函数
-keepclassmembers class com.example.zcx.democoderjoy.ScrollViewActi {
public *;
}
效果:增加之前反编译:
家之后效果:
发现增加了print函数,并没有被混淆。
c.每次构建时 ProGuard 都会输出下列文件:
dump.txt
- 说明 APK 中所有类文件的内部结构。
mapping.txt
- 提供原始与混淆过的类、方法和字段名称之间的转换。
seeds.txt
- 列出未进行混淆的类和成员。
usage.txt
- 列出从 APK 移除的代码。
这些文件保存在 <module-name>/build/outputs/mapping/release/
中
3.混淆优缺点
混淆的优点主要两个:1.优化删除无用代码,减少apk的体积。2.混淆代码让其反编译之后,无法理解具体内容。
缺点:调试不方便(可以使用mapping.txt),测试不充分可能导致部分功能不能使用。
- 调试不方便(可以配置mapping变得方便在路径 )
- 测试不充分,可能导致部分功能不能使用(比如注解相关等)
android 混淆基本知识
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。