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

[build.gradle配置系列(一)]android studio根据版本号动态生成apk名

程序员文章站 2023-01-06 08:55:31
1、 在build.gradle定义函数,根据时间动态返回时间标签 def static releasetime() { return new date().format("...

1、 在build.gradle定义函数,根据时间动态返回时间标签

def static releasetime() {
    return new date().format("yyyymmdd", timezone.gettimezone("utc"))
}

2、根据时间生成versionname

android {
    compilesdkversion 26
    buildtoolsversion "26.0.0"
    defaultconfig {
        applicationid "com.jason.log.text"
        minsdkversion 21
        targetsdkversion 26
        versioncode 1
        versionname "1.0".concat("_").concat(releasetime())//版本号加上时间
        testinstrumentationrunner "android.support.test.runner.androidjunitrunner"
    }

3、在android标签中的buildtypes配置动态生成apk名

android {
    ...
    buildtypes {
        debug {
            minifyenabled false
            buildconfigfield "boolean", "log_debug", "false"  //定义变量,区分debug 或release 状态,可直接在代码中buildconfig.log_debug使用,便于添加调试log
        }
        release {
            //签名
            minifyenabled false
            buildconfigfield "boolean", "log_debug", "true"
            proguardfiles getdefaultproguardfile('proguard-android.txt'), 'proguard-rules.pro'
        }
        applicationvariants.all { variant ->
            variant.outputs.each { output ->
                def outputfile = output.outputfile
                if (outputfile != null && outputfile.name.endswith('.apk')) {
                    def type = ""
                    if (variant.buildtype.name == 'debug') {
                        type = "_debug"
                    }
                    def filename = "logtest_v${defaultconfig.versionname}${type}.apk" //定义apk名
                    output.outputfile = new file(outputfile.parent, filename)
                }
            }
        }
    }
}

另外,我们可以在debug或release 标签中定义一个变量,用于控制是否输出调试log,如下:
buildconfig.log_debug在debug状态为true,release 状态下为false

        if(buildconfig.log_debug){
            log.d(tag,"....");
        }