如何通过Kotlin Android扩展插件禁用合成视图属性的生成

时间:2019-01-14 15:13:19

标签: android kotlin kotlin-android-extensions

the documentation中所述,Kotlin Android扩展插件会通过我的应用布局文件中的ID为每个视图生成静态属性。

我想禁用此功能,因为我们使用DataBinding而不是Kotlin合成视图属性,有时我是无意中导入了这些属性;还会为我们不使用的东西增加额外的构建开销。

无法禁用Android扩展插件,因为我们使用了由同一插件完成的Parcelize功能。

2 个答案:

答案 0 :(得分:4)

现在,android-extensions 插件是 discontinued,因此最好的解决方案是通过从您的 apply plugin: 'kotlin-android-extensions' 中删除 build.gradle 来删除此插件。

我们应该使用 ViewBindingDataBinding 代替合成。

如第一个链接中所述,如果您还使用了parcelizer,则只需将android-extensions插件更改为kotlin-parcelize并将导入语句import kotlinx.android.parcel.Parcelize更改为{{1} } 任何需要的地方。

有关从 android-extensions 迁移到 JetPack here 的更多信息。

答案 1 :(得分:2)

features DSL中有一个androidExtensions属性,可让您提供要启用的功能列表。当前,只有两个可用的parcelizeviews。要禁用综合视图属性,请将其添加到您的build.gradle

androidExtensions {
    features = ["parcelize"]
}

来源:https://github.com/JetBrains/kotlin/blob/6bef27e1e889b17ae84dd2ff99881727f13ac3e5/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidComponentRegistrar.kt#L57