Android项目增加混淆

主要介绍向Android项目中添加混淆功能

增加混淆的原因

  1. 提高安全性,增加反编译的难度
  2. 减少APK的文件大小

实践

混淆的配置

一般情况下,app module 的 build.gradle 文件默认会有如下结构:

android {
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

因为开启混淆会使编译时间变长,所以debug模式下不应该开启。我们需要做的是:

  1. releaseminifyEnabled的值改为true,打开混淆;
  2. 添加自定义的混淆规则

修改后文件内容如下:

buildTypes {
release {
minifyEnabled true //开启混淆
proguardFiles fileTree('prog').asList().toArray()
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

第二行是表示release下

第三行表示开启混淆

第四行表示文件夹prog下所有的文件都作为自定义混淆的配置文件加载;

这个是学习到的新语法。通过fileTree('prog').asList().toArray() 返回文件夹下所有的文件数组。

Android项目增加混淆

第五行表示加载默认的文件proguard-android.txt 和 proguard-rules.pro。

其中getDefaultProguardFile('proguard-android.txt') 表示的是位于 SDK 的 tools/proguard/ 文件夹中的 proguard-android.txt,由Google官方提供的的默认的混淆规则。

注意:SDK中提供的默认的混淆配置文件,里面包含了常见的混淆屏蔽规则,所以在添加自定义规则的时候,先去默认的文件中查看是否已经存在,避免重复。

在向proguard-rules.pro文件中添加混淆规则的时候,不要与SDK提供的proguard-android.txt中的规则重复。其实proguard-android.txt里面已经包含绝大部分的常见的规则。

参考

  • /Users/XXX/Library/Android/sdk/tools/proguard/proguard-android.txt
上一篇:spark RDD编程,scala版本


下一篇:python包管理之Pip安装及使用-1