欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 使用 Gradle 自增长版本号 并更改打包文件名称

程序员文章站 2022-04-12 08:08:17
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文件

如题,目录如下:
Android 使用 Gradle 自增长版本号 并更改打包文件名称
文件中内容如下:
Android 使用 Gradle 自增长版本号 并更改打包文件名称

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")
                    }
            }
    }

build完整文件下载地址

参考Android应用编译时自动生成版本号
Android 配置gradle实现VersionCode自增
两种方法实现VersionCode和VersionName自增

本文地址:https://blog.csdn.net/gufeilong/article/details/107360281