簡體   English   中英

'kotlin-android-extensions' Gradle 插件已棄用

[英]The 'kotlin-android-extensions' Gradle plugin is deprecated

使用 Gradle 6.2 版和 Android studio 4.0.1 版,我收到了Kotlin-android-extention extention 的棄用消息。 任何人都知道如何解決它。

基於google 文檔已棄用

Kotlin Android Extensions 已棄用,這意味着不再支持使用 Kotlin 合成來進行視圖綁定。

對於那些想知道synthetic是什么的人。 我應該說一種使用 kotlin 訪問 UI 視圖 ID 的簡單方法,這可以通過在Gradle中添加'kotlin-android-extensions'來實現。

  • 如果您的應用使用 Parcelable,您可以使用'kotlin-parcelize'而不是'kotlin-android-extensions'
  • 如果您的應用使用 Kotlin 合成來進行視圖綁定,請使用本指南遷移到 Jetpack ViewBindingData Binding

現在已棄用

  • 從插件中刪除'Kotlin-android-extention' (用於kotlin的合成方式訪問UI元素)

  • 在下面添加以使用view binding方式訪問 UI 元素

    android {... buildFeatures { viewBinding true } }
  • 如果您的應用包含Parcelable ,請在插件中添加'kotlin-parcelize'以使用簡單的方法來創建 parcelable,只需將@Parcelize注釋添加到 class

您可以查看有關此更新的Google 指南

上面的答案是正確的,但是當你從你的項目中刪除 'kotlin-android-extensions' 時,使用 kotlin 的合成方式訪問視圖屬性是不可能的,所以你需要遷移到使用視圖綁定,按照谷歌的這個遷移指南查看綁定: 鏈接

由於現在不推薦使用“kotlin-android-extensions”,因此最好使用視圖綁定。

對於 build.gradle 文件中的第一個啟用視圖綁定,通過在 android 塊下編寫這些代碼行。

buildFeatures {
    viewBinding true
} 

然后在活動文件中使用視圖綁定功能

首先聲明一個用於綁定的全局變量為

private lateinit var binding:ActivityHomeBinding

這里 ActivityHomeBinding 是自動生成的 class

然后在 OnCreate() 方法中編寫這些代碼

binding = ActivityHomeBinding.inflate(layoutInflater)
setContentView(binding.root)

如前所述,Kotlin Synthetics 已棄用,應由 View Binding 替換。 就我而言,我想引入 View Binding 並逐漸從 Kotlin Synthetics 遷移。 可以在一個項目中同時擁有這兩者,您只需要記住不要更新 Kotlin 版本 - 我在4.1.21出現構建錯誤,因此需要降級到1.4.10

還記得刪除 Kotlin Synthetics 從 class(通常是活動/片段)導入,它已遷移到使用視圖綁定。

如果項目有大量合成引用並且您想暫時推遲 ViewBinding 遷移,您可以使用此 gradle 任務生成 Kotlin 合成代碼,無需“Kotlin ZC31B32364CE19CA8FCD150A417ECCE5 擴展”插件

https://github.com/sanjeevirajm/kotlin_synthetic_undepreciated

Google 提供了一種新的視圖綁定方式,而不是“kotlin-android-extensions”。 在app模塊的build.gradle中添加以下插件。

android {
...
buildFeatures {
    viewBinding true
}

}

好吧,我得到這個錯誤的原因完全不同。 我忘了添加自定義應用程序 class 我在清單文件中添加了 hiltannotation。

<application
        android:name=".MyApplication"

暫無
暫無

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

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