Android开发杂记--打包release(发行版)App,并将其体积压缩至最小
引言
我们在 Android Studio 中开发完App,直接点击右上角的 Run 会发现,App的大小至少10MB左右,且没有任何签名。
这是因为我们直接 Run 的时候,生成的是 Debug 版本,为了开发时的编译速度,因此其体积比较大。但当我们想要将 App 正式上线时,不可能拿着 Debug 版本给人用,因此需要生成 Release(发行) 版。
生成签名文件
想要生成 Release 版,首先需要一个签名文件,制作工具很多,这里不重点介绍,我这里使用腾讯云·移动安全制作签名文件。如下所示,填写相关信息,点击制作签名即可。
配置build.gradle文件
首先在项目的根build.gradle中,添加一个依赖:
buildscript {
...
dependencies {
classpath "com.android.tools.build:gradle:4.1.2"
// 需要新添加的依赖
classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.20'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
...
随后在app目录下的build.gradle中添加签名和打包配置,有注释的地方表示要自己进行配置:
...
// 添加打包插件
apply plugin: 'AndResGuard'
android {
// 填写签名文件信息
signingConfigs {
key {
storeFile file('D:\\Projects\\AndroidStudio\\key.keystore')
storePassword '123456'
keyAlias 'key'
keyPassword '123456'
}
}
...
defaultConfig {
...
// 添加刚刚配置的签名文件
signingConfig signingConfigs.key
}
buildTypes {
release {
// 修改为 true
minifyEnabled true
// 允许打包成多Dex文件
multiDexEnabled true
...
}
}
...
}
dependencies {
...
}
// 以下配置直接复制过去即可
andResGuard {
// mappingFile = file("./resource_mapping.txt")
mappingFile = null
use7zip = true
useSign = true
// 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字
keepRoot = false
// 设置这个值,会把arsc name列混淆成相同的名字,减少string常量池的大小
fixedResName = "arg"
// 打开这个开关会合并所有哈希值相同的资源,但请不要过度依赖这个功能去除去冗余资源
mergeDuplicatedRes = true
whiteList = [
// for your icon
"R.drawable.icon",
// for fabric
"R.string.com.crashlytics.*",
// for 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"
]
compressFilePattern = [
"*.png",
"*.jpg",
"*.jpeg",
"*.gif",
]
sevenzip {
artifact = 'com.tencent.mm:SevenZip:1.2.20'
//path = "/usr/local/bin/7za"
}
/**
* 可选: 如果不设置则会默认覆盖assemble输出的apk
**/
// finalApkBackupPath = "${project.rootDir}/final.apk"
/**
* 可选: 指定v1签名时生成jar文件的摘要算法
* 默认值为“SHA-1”
**/
// digestalg = "SHA-256"
}
执行 Release 打包脚本
在 Android Studio 中点击 Gradle 选项卡,默认在 Android Studio 的右上角,如图所示。
找到如下界面,右击 resguardRelease,再单击 Run 即可自动打包完成 Release(发行) 版本。
等待打包完成(需要一点儿时间),在项目路径下的 app\build\outputs\apk\release中即可找到打包完成的apk,可以很明显的看出来,大小相比 Debug 版已经小了很多了。