Как получить доступ к gradle defaultConfig в родительском файле gradle - PullRequest
0 голосов
/ 06 апреля 2020

Я хочу получить доступ к defaultConfig, который определен в подпроекте (app -> build.gradle) в родительский build.gradle, но, похоже, не работает ИЛИ Я делаю что-то не так. На самом деле мне нужно получить доступ к build build, который я определяю в defaultConfig файла app build.gralde.

app 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;

    }

1 Ответ

1 голос
/ 06 апреля 2020

Когда вы звоните project.android, вы имеете в виду проект вызывающего абонента, в вашем случае родительский проект. Вместо этого вам следует обратиться к своему подпроекту Android.

Из родительского проекта вы можете получить доступ к указанному подпроекту c по имени, используя project(name).

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