我正在使用此文件构建 release.apk 文件。
android {
compileSdkVersion 21
buildToolsVersion '20.0.0'
signingConfigs {
...
}
buildTypes {
debug {
debuggable true
jniDebugBuild true
}
release {
runProguard true
proguardFile('proguard-project.txt')
debuggable false
signingConfig signingConfigs.release
}
}
defaultConfig {
minSdkVersion 14
targetSdkVersion 21
}
productFlavors {
}
lintOptions {
disable 'ValidFragment'
}
在 proguard-project.txt 我有这个:
-printmapping build\outputs\apk\out.map
一切正常,我只想让 out.map 文件名包含版本代码,例如 out.29.map,其中 29 是版本代码。
谢谢
最佳答案
原来是这样
先定义一个获取版本名的函数
def getVersionName() {
File stringsXmlFile = new File("src\\main\\res\\values\\strings.xml")
String contents = stringsXmlFile.getText()
String version = contents.find("<string name=\"version\">[^<]*</string>");
version = version.replace("<string name=\"version\">", "").replace("string>", "")
version = version.replace("<", "")
version = version.substring(0, version.length() - 1)
return version
}
二、定义任务函数
gradle.taskGraph.afterTask { Task task, TaskState state ->
if (task.name.equals("assembleRelease")) {
File proguard = new File("build\\outputs\\apk\\out.map")
proguard.renameTo("build\\outputs\\apk\\out-" + getVersionName() + ".map")
}
}
就是这样。
关于android - 如何使用 gradle 和 proguard printmapping 创建带有版本代码的 out.map 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27360913/