Android gradle脚本相关

本文介绍了如何调试Android Gradle脚本,包括使用println打印变量值,以及通过Debug、Release模式设置不同变量。同时,讨论了Gradle如何读取环境变量以适应CI/CD流程中动态构建版本的需求。
摘要由CSDN通过智能技术生成

1、调试gradle脚本

可以使用println(“hello world”)来打印变量值

参考文档(gradle断点,我没尝试过):

https://stackoverflow.com/questions/28437636/how-to-debug-a-gradle-build-gradle-file-in-a-debugger-with-breakpoints

 

2、根据Debug、release等信息来设置不同的变量/参数

android.applicationVariants.all { variant ->
    def buildTypeName = variant.buildType.name
    def flavorName = variant.flavorName
    String time = null;
    if ("debug".equalsIgnoreCase(buildTypeName)) {
        time = buildTime(date, timeForDebugFileFormater)
    } else {
        time = buildTime(date, timeForReleaseFileFormater)
    }
    variant.outputs.each { output ->
        def outputFile = output.outputFile
        def fileName = "XXX_v${defaultConfig.versionName}_${flavorName}_${buildTypeName}_${time}.apk"
        output.outputFile = new File(outputFile.parent, fileName)
    }
}

 

这里需要注意的是:

1、以上脚本只适用于app module,即com.android.application,如果是com.android.library的话,需要改成如下:

android.libraryVariants.all { variant ->

....

}

2、这段代码不会立即执行。看下面的例子

def version = "1.0"

android.applicationVariants.all { variant ->
    def buildTypeName = variant.buildType.name
    if ("debug".equalsIgnoreCase(buildTypeName)) {
        println(“debug。。。“)
    `	version = "1.0-debug"
    } else {
        println(“release。。。”)
    `	version = "1.0-release"
    }

println("version:"+version)

最终输出的是:

version:1.0

debug

release

 

也就是说想通过这个方法来改变,顺序执行过程中的gradle变量是不可行的。改变在android编译构建时的变量是OK的

 

参考资料

https://blog.csdn.net/qq_35780104/article/details/107698388?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.not_use_machine_learn_pai&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.not_use_machine_learn_pai

https://blog.csdn.net/bunnycoffer/article/details/78852658

 

3、gradle读取环境变量

场景:在工作中需要使用流水线编译时,需要从外部设置环境变量来达到控制台根据不同的用户输入来编译不同的版本(不同于productFlavor)

String getEnvValue(String key,String def){
    def val = System.getenv(key)
    if(null != val){
        return val
    }
    return def
}

android.defaultConfig.versionName = getEnvValue("VERSION_NAME","1.2")
android.defaultConfig.versionCode  = getEnvValue("VERSION_CODE","1.2").toInteger()

以上代码可以通过外部变量来覆写build.gradle中的版本号。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值