【问题标题】:How to access versionCode from task in Gradle Experimental Plugin如何从 Gradle Experimental Plugin 中的任务访问 versionCode
【发布时间】:2020-03-10 08:50:24
【问题描述】:

我想从 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:)
}

【问题讨论】:

    标签: android gradle groovy gradle-experimental


    【解决方案1】:

    在您的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"
    }
    

    【讨论】:

    • 我想从该 printVersion 任务中访问 android.defaultConfig.versionCode 中的实际内容。
    • 在这种情况下选中“替代解决方案”。
    • 不起作用,我得到:错误:(65, 0) 无法为 org.gradle.api.Project 类型的项目 ':app' 获取未知属性 'android'。我正在使用实验性插件,所以在 android 之前有模型,但 projeect.model.android.defaultConfig.versionCode 也不起作用。
    • 我用实验性插件(0.9.0-alpha2)研究了很多,但还没有解决方案。
    • 我整天都这样做:) 我问如何迁移到稳定的 gradle 但我只得到了几票...
    【解决方案2】:

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

      def getVersionCode = { ->
          return 1
      }
    

    defaultConfig中使用这个方法:

    android {
      defaultConfig {
        versionCode getVersionCode()
      }
    }
    

    versionCode 属性可以是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 2016-02-13
      • 2022-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多