gradle kotlin dsl将android{}移动到根项目build.gradle.kts中的子项目{}

gradle kotlin dsl将android{}移动到根项目build.gradle.kts中的子项目{},android,gradle,gradle-kotlin-dsl,Android,Gradle,Gradle Kotlin Dsl,我试图将android{}(单个模块)移动到子项目{}(根项目build.gradle.kts)(以避免在每个模块中重复相同的android{}) 使用gradlegroovy时,我能够移动。但在gradlekotlin dsl中。在子项目{} 我试过了 subprojects { afterEvaluate { if (project.plugins.hasPlugin(Plugins.kotlinAndroidApplication)) { proj

我试图将
android{}
(单个模块)移动到
子项目{}
(根项目
build.gradle.kts
)(以避免在每个模块中重复相同的
android{}

使用gradle
groovy
时,我能够移动。但在gradle
kotlin dsl中
。在
子项目{}

我试过了

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

       }
    }
}
但总是会出现以下错误:
未解析引用:android

对于
kotlin dsl
,是否有任何方法可以访问
android{}
内部
子项目{}

尝试以下方法:

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{}
}
子项目{
project.plugins.configure(项目)
}
fun PluginContainer.configure(项目:project){
被修饰时{
如果(这是BasePlugin){
project.extensions
.getByType()
.申请{
applyAndroidCommons()
}
}
}
}
fun BaseExtension.applyAndroidCommons(){
compileSdkVersion(BuildConfig.COMPILE_SDK)
默认配置{
minSdkVersion(BuildConfig.MIN_SDK)
targetSdkVersion(BuildConfig.TARGET_SDK)
}
//你会把其他东西放进android{}
}

Hi LêKhánh Vinh。您是否看到对先前问题的编辑?您应该会收到每一个的通知。