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{}
)
使用gradlegroovy
时,我能够移动。但在gradlekotlin 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。您是否看到对先前问题的编辑?您应该会收到每一个的通知。