我的项目正在迁移到视图绑定,但与此同时,在查看构建日志时,此警告会分散注意力
警告:“kotlin-android-extensions”Gradle 插件已弃用。请使用此迁移指南 (https://goo.gle/kotlin-android-extensions-deprecation) 开始使用视图绑定 (https://developer.android.com/topic/libraries/view-binding) )和“kotlin-parcelize”插件。
如何禁用它?
我最近也遇到这个问题并发现了。
在 Kotlin 1.4.20-M2 中,JetBrains 弃用了 Kotlin Android 扩展编译器插件,转而使用视图绑定,而且 Google 正在促进模块化,但合成属性不能跨模块工作。
所以要修复这个警告。删除
apply plugin: 'kotlin-android-extensions'
文件中的 build.gradle
注意:如果您使用Parcelize。
不要忘记 Kotlin 中的 Parcelize 功能是 kotlin-android-extensions 编译器插件的一部分,因此删除该插件最终会导致所有依赖于 Parcelize 注解的 Parcelable 类无法编译。
JetBrains 从 Kotlin Android 扩展中提取 Parcelize 到新插件,
kotlin-parcelize
首先,您需要将 kotlin-parcelize 插件添加到您的项目
build.gradle
文件中。
Plugins {
...
id 'kotlin-parcelize'
}
然后将旧的导入声明从
更改import kotlinx.android.parcel.Parcelize
到
import kotlinx.parcelize.Parcelize
有关更多信息,我建议您阅读此博客迁移已弃用的 Kotlin Android 扩展编译器插件
只需从 Gradle 中删除此行:
apply plugin: 'kotlin-android-extensions'
我希望它对未来的读者有所帮助。
build.gradle(:应用程序):
android
{
...
buildFeatures
{
viewBinding = true
}
}
将其添加到 Kotlin 绘图中。因为它具有“kotlin-android-extensions”提供的功能。
plugins
{
...
id 'kotlin-parcelize'
}
你必须将 minifyEnabled 设置为 True
buildTypes
{
release
{
minifyEnabled true
...
}
}
MainActivity.kt
import com.hakanbayazithabes.firstproject.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity()
{
private lateinit var binding: ActivityMainBinding _//add here_
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater) _//add here_
val view = binding.root _//add here_
setContentView(view) _//add here_
//setContentView(R.layout.activity_main)
}
fun Change(view : View){
binding.textView.text = "Hello Android" _//worked_
}
}
按照以下步骤操作:
kotlin-android-extensions
插件已被弃用。
对于迁移,请按照以下步骤操作:
1)在build.gradle
中启用视图绑定
android {
viewBinding {
enabled = true
}
}
2) 将
kotlin-parcelize
添加到 build.gradle
plugins {
id 'kotlin-parcelize'
} 3) 从您的项目中删除
kotlin-android-extensions
。
该报告警告您正在使用已弃用的插件,我不明白您为什么要禁用它,因为我预计编译迟早会失败,而您可能不记得原因。
文章说:“如果您的应用程序不使用 Parcelize 功能,请删除启用 Kotlin Android Extensions 的行:(又名,只需删除 apply plugin: 'kotlin-android-extensions' 行)。结果可能是您不这样做”不需要该插件,很难说,因为您没有表明您是否正在使用已弃用插件提供的任何功能。
如果您使用“Parcelable”注释任何类,那么您需要做一些工作,如本文所述。
编辑:视图合成也消失了(该功能允许您不使用所有这些“findViewById”。这(IMO)是更大的损失,我还没有移植我的应用程序,所以我无法评论它的工作量将需要移动。
在不久的将来,我选择等待并稍后实现新代码,但您需要自己决定何时适合从已弃用的插件迁移。