Android Studio 混淆配置详解
什么是混淆?
混淆(Proguard)是 Android 应用程序构建工具中的一个开源的代码缩减、优化和混淆工具。在编译 APK 文件的过程中,代码混淆可以将类名、方法名、变量名等一些敏感信息混淆成一个无法识别的字符串,以增加代码的安全性和减小 APK 大小。
如何进行混淆?
在 Android Studio 中进行混淆大致分为以下几个步骤:
- 配置混淆
在 app 模块下的 build.gradle 文件中,可以添加以下代码进行配置混淆信息:
android {
...
buildTypes {
release {
minifyEnabled true // 是否开启混淆,默认为 false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 指定混淆规则
}
}
}
其中,getDefaultProguardFile('proguard-android-optimize.txt')是默认的混淆配置文件,'proguard-rules.pro'是我们自己定义的混淆规则文件。
- 定义混淆规则
在项目根目录下的 proguard-rules.pro 文件中定义混淆规则。通常情况下,我们会保留一些通过反射调用的类、方法、属性等信息。下面是一个简单的例子:
-keep public class com.example.app.User {
public <init>();
public void setName(java.lang.String);
public java.lang.String getName();
}
其中,-keep 指定要保留的信息,public class com.example.app.User 指定了要保留的类,后面紧跟的是保留的方法、属性等信息。
- 进行混淆
在进行 build 时,选择 release 模式即可进行混淆。
示例说明
接下来,我们将通过两个示例详细说明如何进行混淆:
示例1:保留自己编写的工具类
假如我们有一个自己编写的 Utils 工具类,我们希望在混淆时将其保留不被删除。
首先,在 proguard-rules.pro 文件中添加以下规则:
-keep class com.example.app.Utils {
<methods>;
}
接着,进行 build 时选择 release 模式即可。此时,我们可以在混淆后的代码中发现 Utils 类并没有被混淆。
示例2:保留第三方库的类
假如我们使用了第三方库,需要保留其中一些类不被混淆。以 Glide 图片加载库为例:
首先,我们需要在 app 模块下的 build.gradle 文件中添加 Glide 库的依赖:
dependencies {
...
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
}
然后,我们需要在 proguard-rules.pro 文件中添加以下规则:
-keep public class com.bumptech.glide.** {
public protected *;
}
其中,"." 表示匹配任何字符,"**" 表示匹配任意子包。
最后,进行 build 时选择 release 模式即可。此时,我们可以在混淆后的代码中发现 Glide 相关的类并没有被混淆。
总结
在进行混淆前,需要仔细考虑需要保留哪些类、方法、属性等信息。如果混淆的过程中遇到问题,可以通过增加准确的混淆规则来解决。同时,在进行混淆时,可以通过在混淆后的代码中查看类名、方法名等信息来判断混淆是否成功。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android studio 混淆配置详解 - Python技术站