android - 如何从 Gradle Experimental Plugin 中的任务访问 versionCode

标签 android gradle groovy gradle-experimental

我想从 gradle 任务访问 defaultConfig 中的 versionCode 和 versionName。我正在使用实验性 gradle 插件。我尝试了 model.android.defaultConfig.versionCode 但它无法识别 android...

apply plugin: 'com.android.model.application'

apply from: "../config.gradle"
apply from: "../gitversion.gradle"
def config = ext.configuration

model {
    android {
        compileSdkVersion = config.compileSdkVersion
        buildToolsVersion = config.buildToolsVersion

        defaultConfig {
            applicationId = 'eu.tss.apitest'
            minSdkVersion.apiLevel = config.minimumSdkVersion
            targetSdkVersion.apiLevel = config.targetSdkVersion
            defaultConfig {

            versionCode = 1
            versionName = '1.0'
            ext.printVersions(versionCode,versionName)
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles.add(file('proguard-android.txt'))
            }
        }

    }
   android.lintOptions {

        abortOnError false
    }
}

dependencies {
    println rootProject.getName()
    compile 'com.android.support:appcompat-v7:25.0.0'
    compile project(':tssapiandroid')
    compile project(path: ':tssuielements')
}

task printVersions{

    //I would like to access versionCode here:)
}

最佳答案

在您的 build.gradle 中创建方法:

def getVersionCode = { ->
    // calculate versionCode code or use hardcoded value
    return 1
}

defaultConfig中使用这个方法:

android {
    defaultConfig {
        versionCode getVersionCode()
    }
}

在您的自定义任务中使用相同的方法:

task printVersions{
    print "Version code is " + getVersionCode()
}

替代方案是直接访问versionCode属性:

task printVersions{
    print "Version code is $project.android.defaultConfig.versionCode"
}

关于android - 如何从 Gradle Experimental Plugin 中的任务访问 versionCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40906107/

相关文章:

java - 在 Eclipse Java EE 上安装 Android SDK

Gradle 项目,子项目重复执行

java - 为什么今天开发Android需要与gradle同步?

gradle - 如何评估Groovy中的字符串键,使其输出值?

Groovy 命名和默认参数

java - 媒体播放器和 finish() 方法

android - 重新打开 fragment 后 fragment 中的 ViewBinding Null 异常错误

android - 在Android中必须使用GCM进行推送通知吗?

gradle - 如何将Gradle产生的工件名称设置为Jenkins管道传递的值

groovy - 在 Netbeans 中运行 fork 的 groovyc 时出错