如何从Gradle实验插件中的任务中访问版本码



我想从gradle任务中访问DefaultConfig中的版本码和版本名称。我正在使用实验性的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"
}

最新更新