Kotlin 1.8 將徹底移除 Kotlin Synthetics
Kotlin Android Extensions Gradle 插件最初由 JetBrains 開(kāi)發(fā),并于 2017 年發(fā)布。這個(gè)插件為 Android 開(kāi)發(fā)提供了兩項(xiàng)非常優(yōu)秀的特性,分別是 Synthetics 和 Parcelize。
其中 Synthetic 可以讓開(kāi)發(fā)者減少對(duì)findViewById的使用,用 kotlinx.android.synthetic 綁定就能實(shí)現(xiàn);而 Parcelize 可以讓開(kāi)發(fā)者用@Parcelize的注解就能實(shí)現(xiàn) Parcelable 而不用寫(xiě)模板代碼。
雖然 Synthetic 具備不錯(cuò)的優(yōu)點(diǎn),但 Synthetic 同時(shí)也存在諸如污染全局命名空間、不能暴露可空性信息和僅支持 Kotlin 代碼的缺點(diǎn)。
也正是因?yàn)檫@些缺點(diǎn),后來(lái) Android 團(tuán)隊(duì)發(fā)布了 View Binding 用于取代 findViewById。View Binding 是一個(gè)允許開(kāi)發(fā)者更容易編寫(xiě)與視圖交互的代碼的功能。一旦在一個(gè)模塊中啟用了 View Binding,它會(huì)為該模塊中的每個(gè) XML 布局文件生成一個(gè)綁定類。綁定類的一個(gè)實(shí)例包含對(duì)所有在相應(yīng)布局中擁有 ID 的視圖的直接引用。
為了支持更好的解決方案,在 2020 年 11 月,Android 開(kāi)發(fā)團(tuán)隊(duì)就宣布 Android Kotlin Extensions Gradle 插件已經(jīng)被廢棄,并建議開(kāi)發(fā)者從項(xiàng)目中刪除這個(gè)插件。為了開(kāi)發(fā)者有更多的時(shí)間來(lái)完成遷移,Android 開(kāi)發(fā)團(tuán)隊(duì)還延長(zhǎng)了支持的時(shí)間。
如今,Android 團(tuán)隊(duì)為遷移設(shè)定了一個(gè)最后期限:該插件將在 Kotlin 1.8 中被徹底移除,該版本預(yù)計(jì)將于 2022 年底發(fā)布。屆時(shí),如果你的項(xiàng)目仍然依賴于這個(gè)插件,開(kāi)發(fā)者將無(wú)法更新到最新的 Kotlin 版本。
開(kāi)發(fā)者無(wú)需擔(dān)心該插件所包含的另一個(gè)功能 Parcelize,Parcelize 現(xiàn)在可以在獨(dú)立的 kotlin-parcelize 插件中使用,功能上沒(méi)有發(fā)生任何變化。
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:Kotlin 1.8 將徹底移除 Kotlin Synthetics
本文地址:https://www.oschina.net/news/184251/discontinuing-kotlin-synthetics