迁移至Kotlin DSL后动态功能模块无法设置buildFeatures的dataBinding属性
原因说明
你遇到的报错主要来自两个问题:
- 动态功能模块使用的配置类是
com.android.build.gradle.DynamicFeatureExtension,而非主应用模块的AppExtension,所以你在AppExtension中自然找不到对应属性 - Kotlin DSL为强类型语法,
dataBinding属性的赋值需要显式调用isEnabled,和Groovy的动态赋值语法有差异
解决方案
- 第一步:确认动态功能模块的插件配置正确
模块级build.gradle.kts头部必须引入动态功能模块插件,用到Kotlin的话同时引入kapt插件:plugins { id("com.android.dynamic-feature") id("kotlin-android") id("kotlin-kapt") // dataBinding需要kapt支持 } - 第二步:使用Kotlin DSL适配的buildFeatures写法
直接在模块级配置文件中使用如下代码即可开启dataBinding:android { buildFeatures { dataBinding.isEnabled = true } } - 第三步:统一全局配置的适配(可选)
如果你在根工程/规约插件中对所有模块做统一配置,需要同时覆盖两种扩展类型:// 适配主App模块 plugins.withType<com.android.build.gradle.AppExtension> { buildFeatures { dataBinding.isEnabled = true } } // 适配动态功能模块 plugins.withType<com.android.build.gradle.DynamicFeatureExtension> { buildFeatures { dataBinding.isEnabled = true } } - 第四步:修复IDE异常报红
若修改后编译正常但IDE仍提示未找到引用,清理IDE缓存重启即可:依次点击File -> Invalidate Caches...,勾选清空文件系统缓存选项后重启IDE。
内容的提问来源于stack exchange,提问作者Rainmaker
相关产品推荐
相关产品推荐

