簡體   English   中英

如何通過 Kotlin Android 擴展插件禁用合成視圖屬性的生成

[英]How to disable the generating of synthetic view properties by the Kotlin Android extensions plugin

Kotlin Android 擴展插件使用我的應用程序布局文件中的 ID 為每個視圖生成靜態屬性,如文檔所述

我想禁用這個功能,因為我們使用 DataBinding 而不是 Kotlin 合成視圖屬性,有時我會不小心導入它們; 它還為我們不使用的東西增加了額外的構建開銷。

禁用 Android 擴展插件是不可能的,因為我們使用由同一插件完成的 Parcelize 功能。

androidExtensions DSL 中有一個features屬性,允許您提供要啟用的功能列表。 目前,只有兩個可用, parcelizeviews 要禁用綜合視圖屬性,請將其添加到您的build.gradle

android {
   // ...
}

androidExtensions {
    features = ["parcelize"]
}

資料來源: https : //github.com/JetBrains/kotlin/blob/6bef27e1e889b17ae84dd2ff99881727f13ac3e5/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidComponentRegistrar.kt

如今,插件是Android系統的擴展停產所以最好的解決方法是將只通過刪除刪除此插件apply plugin: 'kotlin-android-extensions'從你build.gradle

我們應該使用ViewBindingDataBinding而不是合成。

如第一個鏈接中所述,如果您還使用parcelizer,則只需將android-extensions插件更改為kotlin-parcelize並更改 import 語句import kotlinx.android.parcel.Parcelizeimport kotlinx.parcelize.Parcelize無論在哪里需要。

有關從 android-extensions 遷移到 JetPack 的更多信息,請點擊此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM