前言
在Kotlin项目中,kotlinx.android.synthetic
是一个用于在XML布局中直接通过ID访问视图(Views)的便捷库。
然而,自从Android Jetpack的2.0版本开始,Google推荐使用更现代的视图绑定和View Binding技术来代替Synthetic Binding,因为它们提供了更好的类型安全和更清晰的代码结构。
现在使用kotlinx.android.synthetic
会开发工具报错。
需要迁移至View Binding
删除原来的
1 | import kotlinx.android.synthetic.main.activity_main.* |
替换为
1 | import com.xhly.easystud.databinding.ActivityMainBinding |
使用View Binding
自从Android Jetpack的2.0版本开始,Google推荐使用更现代的视图绑定和View Binding技术来代替Synthetic Binding,因为它们提供了更好的类型安全和更清晰的代码结构。
The ‘kotlin-android-extensions’ Gradle plugin is deprecated. Please use this migration guide (https://goo.gle/kotlin-android-extensions-deprecation) to start working with View Binding (https://developer.android.com/topic/libraries/view-binding) and the ‘kotlin-parcelize’ plugin.
启用View Binding
在build.gradle
文件中启用View Binding。
1 | android { |
使用View Binding
对于每个布局文件,Android Studio会生成一个绑定类。
例如,对于activity_main.xml
,你可以通过ActivityMainBinding
来访问视图。
1 | import com.xhly.easystud.databinding.ActivityMainBinding |
移除Kotlin Android Extensions依赖
从build.gradle
中移除kotlin-android-extensions
依赖。
清理和重建项目
在Android Studio中,尝试清理并重建项目(Build > Clean Project
和 Build > Rebuild Project
)。
使用AI来迁移
使用AIi迁移Kotlin Android Extensions至View Binding,涉及到id的命名方式变更和inclue组件的影响,迁移结果不太好,这里使用AI迁移至findViewById()
的方式。
我这里使用的TRAE AI
插件。
第一步 先找到需要迁移的文件列表
1 | 我之前使用了kotlinx.android.synthetic.*来直接访问布局控件 |
第二步 进行迁移
1 | ## 背景 |