当前位置: 移动技术网 > 移动技术>移动开发>Android > Android 使用 Gradle 自增长版本号 并更改打包文件名称

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

2020年07月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文件

如题,目录如下:
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")
                    }
            }
    }

build完整文件下载地址

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

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网