gradle kotlin-dsl перемещает android {} в подпроект {} в корневом проекте build.gradle.kts

Я пытаюсь переместить android {} (отдельный модуль) в subprojects {} (корневой проект build.gradle.kts) (чтобы избежать дублирования одного и того же android {} в каждом модуле)

Я смог двигаться при использовании gradle groovy. но в классе kotlin-dsl. кажется невозможным сослаться на android в subprojects {}

я пытался

subprojects {
    afterEvaluate {
       if (project.plugins.hasPlugin(Plugins.kotlinAndroidApplication)) {
          project.android {

       }
    }
}

Но всегда получаю эту ошибку: Unresolved reference: android

Есть ли способ получить доступ к android {} внутри subprojects {} для kotlin-dsl?


person Lê Khánh Vinh    schedule 06.10.2019    source источник
comment
Привет, Ле Кхан Вин. Видите ли вы изменения в ваших предыдущих вопросах? Вы должны получать уведомления для каждого из них.   -  person halfer    schedule 23.10.2019


Ответы (1)


попробуйте так:

subprojects {
    project.plugins.configure(project)
}

fun PluginContainer.configure(project: Project) {
    whenPluginAdded {
        if (this is BasePlugin) {
            project.extensions
                .getByType<BaseExtension>()
                .apply {
                    applyAndroidCommons()
                }
        }
    }
}

fun BaseExtension.applyAndroidCommons() {
    compileSdkVersion(BuildConfig.COMPILE_SDK)

    defaultConfig {
        minSdkVersion(BuildConfig.MIN_SDK)
        targetSdkVersion(BuildConfig.TARGET_SDK)
    }

    // other stuff you would put into android{}
}
person Kostek    schedule 24.01.2020