项目中通常用到代码混淆,添加不混淆代码块,为生成的apk中减少内存占用以及反编译apk后代码可读性
但是资源文件还是比较好拿到的。所以集成AndResGuard
集成方式:
1.在项目根build.gradle的buildscript --> dependencies中添加
//andresguard classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.15'
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
//andresguard
classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.15'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
repositories {
mavenCentral()
}
}
2.在app目录下新建andresguard.gradle
//---------APP瘦身 配置AndResGuard-----------
apply plugin: 'AndResGuard'
andResGuard {
mappingFile = null
use7zip = true
useSign = true
keepRoot = false
compressFilePattern = [
"*.png",
"*.jpg",
"*.jpeg",
"*.gif",
]
//白名单,主要第三方的不混淆
whiteList = [
// your icon
"R.drawable.icon",
"R.mipmap.app_icon",
//极光推送
"R.drawable.jpush_notification_icon"
]
//配置7zip压缩
sevenzip {
//artifact = 'com.tencent.mm:SevenZip:1.2.10'//配置线上7zip地址
path = ‘/usr/local/bin/7za’//mac下brew安装7zip后的地址
}
/**
* 可选: 如果不设置则会默认覆盖assemble输出的apk
**/
if (IS_JENKINS.toBoolean())
finalApkBackupPath = "${project.rootDir}/app/build/outputs/apk/andresguard_signed.apk"
/**
* 可选: 指定v1签名时生成jar文件的摘要算法
* 默认值为“SHA-1”
**/
// digestalg = "SHA-256"
}
//---------配置AndResGuard-----------
3.在app的build.gradle中添加
apply from: 'andresguard.gradle'
后续建议使用打包命令
./gradlew assembleRelease --> ./gradlew resguardRelease
./gradlew assembleYingyongbaoRelease --> ./gradlew resguardYingyongbaoRelease
......
命令参照