![](/img/trans.png)
[英]How to use @Parcelize now that kotlin-android-extensions is being deprecated?
[英]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'
來實現。
'kotlin-parcelize'
而不是'kotlin-android-extensions'
。現在已棄用
從插件中刪除'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.