Android 使用 Gradle 自增长版本号 并更改打包文件名称
程序员文章站
2022-06-23 09:41:07
Android 使用 Gradle 自增长版本号 并更改打包文件名称 1、在module下创建Version.properties文件2、代码3、打包更改apk文件名称1、在module下创建Version.properties文件如题,目录如下:文件中内容如下:2、代码/** * @param filename 要打开的文件名字,保存版本信息的文件 * @param propName 文件里面的键名字,version_code,version_name * @return 所选择的文件...
Android 使用 Gradle 自增长版本号 并更改打包文件名称
1、在module下创建Version.properties文件
如题,目录如下:
文件中内容如下:
2、代码
/**
* @param filename 要打开的文件名字,保存版本信息的文件
* @param propName 文件里面的键名字,version_code,version_name
* @return 所选择的文件里面的propName对应的值
*/
def getProperty(String filename, String propName) {
def versionFile = file(filename)
if (versionFile.canRead()) {
def props = new Properties()
props.load(new FileInputStream(versionFile))
if ("version_Code" == propName) {
//获取versionCode对应的值
String versionCode = props[propName]
int code = Integer.valueOf(versionCode)
//判断是否是打包release版本程序
def runTasks = gradle.startParameter.taskNames
if (runTasks.toString().contains("assembleRelease")) {
//如果是release打包则版本号自增
props["version_Code"] = (++code).toString()
props.store(versionFile.newWriter(), null)
}
return code
} else if ("version_Name" == propName) {
String versionName = props[propName]
String versionCode = props["version_Code"]
String today = new Date().format("yyMMdd")
//获取最后一次提交的sha1的前6位
Process process = "git describe --always".execute()
process.waitFor()
String sha1 = process.getText().trim()
// git rev-list --count HEAD # 获取git提交次数,如果需要也可以加入到resName中
String resName = "$versionName.$versionCode.$today.$sha1";
return resName;
}
} else {
print("can not read prop file:" + filename + "\n");
}
}
以上代码放入到module的build文件中,这部分代码是获取versionCode和versionName的,具体的使用如下:
versionCode getProperty("version.properties", "version_Code")
versionName getProperty("version.properties", "version_Name")
这样就能够获取到你在version属性文件中保存的版本号和版本名称;
3、打包更改apk文件名称
//给文件重新命名的代码,记住是在Android 节点下
android.applicationVariants.all {
variant ->
variant.outputs.all {
output ->
//拿到输出文件
def outputFile = output.outputFile
//这里也可以调用上面的 (':app:assembleRelease' in runTasks) 进行判断 感觉会更好一些
if (outputFile.name.contains("release")) {
//在字符串里面调用方法的话,得要${ }里面调用 切记
outputFileName = new File("../release/", "single-release-${defaultConfig.versionName}.apk");
}
if (outputFile.name.contains("debug")) {
outputFileName = new File("../debug/", "single-debug-${defaultConfig.versionName}.apk")
}
}
}
参考Android应用编译时自动生成版本号
Android 配置gradle实现VersionCode自增
两种方法实现VersionCode和VersionName自增
本文地址:https://blog.csdn.net/gufeilong/article/details/107360281