如何访问父 gradle 文件中的 gradle defaultConfig

How to access gradle defaultConfig in a parent gradle file

我想将在子项目 (app--> build.gradle) 中定义的 defaultConfig 访问到父项目 build.gradle 但似乎无法正常工作或者我做错了什么。实际上我需要访问我在 defaultConfig of app build.gralde 文件中定义的 buildvarient。

应用build.gradle:

android {
    def buildTypeV // define here to update in loop

     dependencies.metaClass.allCompile { dependency ->
        buildTypes.each { buildType ->
      //      "${buildType.name}Compile" project(path: ":${dependency.name}", configuration: buildType.name)
            buildTypeV=buildType.name
        }
    }

    defaultConfig {
         versionNameSuffix "${buildTypeV}"
    }

从父 build.gradle 文件,我这样做是为了访问 versionNameSuffix:

gradle.buildFinished {

     def buildV=${project.android.defaultConfig.versionNameSuffix};
        println "buildV:::: $buildV"

    }

访问 defaultConfig 的方式似乎是错误的,因为构建失败了。有人可以告诉我如何正确访问它吗?

我在控制台上看到的错误:

* What went wrong:
Could not find method $() for arguments [build_8kbbn8x9zcumz6eqfx8ryt61s$_run_closure2$_closure3@77596dd9] on root project 'df-backpack' of type org.gradle.api.Project.

在我的子项目中定义应用变体:

android.applicationVariants.all { variant ->
    variant.outputs.all {
        def flavor = variant.name
        outputFileName = "../app-${flavor}-final.apk"
    }
    variant.assembleProvider.get().doLast getbuilder(variant.name.toLowerCase())
}

// 在父级中 build.gradle:

 project('hpnurse') {
        buildStr=it. android.applicationVariants.all;
        //also tried like this 
        //it.variant.buildType.name;

    }

当您调用 project.android 时,您指的是调用方项目,在您的例子中,指的是父项目。相反,您应该参考您的 Android 子项目。

从父项目中,您可以使用 project(name) 按名称访问特定的子项目。

gradle.buildFinished {
    project('app') {
        def buildV = it.android.defaultConfig.versionNameSuffix
        println "buildV:::: $buildV"
    }
}