AndResGuard使用

1、简介

AndResGuard是一个帮助你缩小APK大小的工具,他的原理类似Java
Proguard,但是只针对资源。他会将原本冗长的资源路径变短,例如将res/drawable/wechat变为r/d/a。

AndResGuard不涉及编译过程,只需输入一个apk(无论签名与否,debug版,release版均可,在处理过程中会直接将原签名删除),可得到一个实现资源混淆后的apk(若在配置文件中输入签名信息,可自动重签名并对齐,得到可直接发布的apk)以及对应资源ID的mapping文件。

可以减小apk包体大小。

开源地址 https://github.com/shwenzhang/AndResGuard

2、接入

a、在项目更目录下build.gradle文件中引入

classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.20'

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.20'
    }
}

b、然后在app目录下新建and-res-guard.gradle文件,在build.gradle下配置如下

apply from:'and-res-guard.gradle'

c、完成以上配置,基本上已配置完毕

and-res-guard.gradle文件内容如下

apply plugin: 'AndResGuard'

andResGuard {

	// mappingFile = file("./resource_mapping.txt")
	mappingFile = null
	use7zip = true
	useSign = true
	// 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字
	keepRoot = false
	// 设置这个值,会把arsc name列混淆成相同的名字,减少string常量池的大小
	fixedResName = "arg"
	// 打开这个开关会合并所有哈希值相同的资源,但请不要过度依赖这个功能去除去冗余资源
	mergeDuplicatedRes = true
	compressFilePattern = [
	"*.png",
	"*.jpg",
	"*.jpeg",
	"*.gif",
	"resources.arsc"
	]
//添加白名单,保留不被混淆的资源文件
	whiteList = [
	//app
	"R.drawable.ic_launcher",
	"R.drawable.ic_launcher_*",
	//google-services
	"R.string.google_app_id",
	"R.string.gcm_defaultSenderId",
	"R.string.default_web_client_id",
	"R.string.ga_trackingId",
	"R.string.firebase_database_url",
	"R.string.google_api_key",
	"R.string.google_crash_reporting_api_key",
	]

	sevenzip {
	artifact = 'com.tencent.mm:SevenZip:1.2.10'
	//path = "/usr/local/bin/7za"
	}
}

3、注意事项

  • 所有使用getIdentifier访问的资源都需要加入白名单。
  • 友盟、极光、sharesdk、个推等第三方sdk资源文件需要加入白名单。
  • glide加载资源文图片需要加入白名单或者处理下
  • 遍历查询所有通过getIdentifier访问的资源,然后统统加入白名单

4、打包apk
可使用命令 ./gradlew resguard[BuildType | Flavor] 或者直接执行下列task任务

5、apk包
我们可得到以下output路径得到以下7个有用的文件说明如下:

AndResGuard使用_第1张图片

6、参考地址
开源地址 https://github.com/shwenzhang/AndResGuard

AndResGuard和walle多渠道打包

https://blog.csdn.net/cto_1649900265/article/details/107456522

你可能感兴趣的:(android,android,studio)