不推荐使用“kotlin-android-extensions”Gradle 插件

Ali*_*oli 23 android gradle kotlin

对于 Gradle 6.2 版和 Android Studio 4.0.1 版,我收到了Kotlin-android-extention. 任何机构都知道如何修复它。

Ali*_*oli 33

已弃用基于谷歌文档

Kotlin Android Extensions 已弃用,这意味着不再支持使用 Kotlin 合成进行视图绑定。

对于那些想知道这synthetic是什么的人。我应该说一个简单的方法来访问UI视图ID与科特林这是通过添加'kotlin-android-extensions'Gradle

  • 如果应用程序使用Parcelable可以使用'kotlin-parcelize'的替代'kotlin-android-extensions'
  • 如果您的应用程序使用 Kotlin 合成进行视图绑定,请使用本指南迁移到 Jetpack ViewBindingData Binding

  • 对我来说 - 自 2022 年 4 月起,此扩展已停止工作。 (2认同)

Gee*_*moy 20

由于“kotlin-android-extensions”现已弃用,因此最好使用视图绑定。

首先,通过在 android 块下编写这些代码行,在 build.gradle 文件中启用视图绑定。

buildFeatures {
    viewBinding true
} 
Run Code Online (Sandbox Code Playgroud)

然后在活动文件中使用视图绑定功能

首先声明一个用于绑定的全局变量为

private lateinit var binding:ActivityMainBinding
Run Code Online (Sandbox Code Playgroud)

这里 ActivityMainBinding 是一个自动生成的类

然后在OnCreate()方法中编写这些代码

binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
Run Code Online (Sandbox Code Playgroud)


nor*_*DEV 15

最后运行的 Kotlin 版本:1.7.21


Ami*_*aza 8

现在已弃用

  • 'Kotlin-android-extention'从插件中删除。(用于 kotlin 的访问 UI 元素的合成方式)

  • 添加以下以使用view binding访问 UI 元素的方式

    android {
       ...
       buildFeatures {
           viewBinding true
       }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果您的应用程序包含Parcelable,请添加'kotlin-parcelize'插件以使用一种简单的方法来创建parcelable,只需向@Parcelize类添加注释即可

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


小智 7

在我看来,使用这个插件仍然比介绍的方法更好,我们只需要注意 ID。\n因为随着 2017 年发布的 Android Kotlin Extensions Gradle 插件出现了 Kotlin Synthetics。对于每个布局文件,Kotlin Synthetics 都会创建一个自动生成的类,其中包含您的 view\xe2\x80\x94 ,就这么简单。\n您只需在 Gradle 文件中导入此插件,然后就可以直接引用视图引用\n它只在内部调用一次 findViewById,然后缓存它。\n这用起来很方便,也很有趣,那么为什么它被弃用了\n我们来分析一下。\n优点\n没有样板代码 \xe2\x80\x94 只需配置一旦将其添加到 Gradle 文件中,您就可以开始使用了。Kotlin Synthetics 将自动生成一个可供您使用的类。\n类型安全 \xe2\x80\x94 所有视图均从布局文件中选取其已知类型。\n缺点\n部分空安全 \xe2\x80\x94通常是空安全的,因为所有视图都必须存在于布局文件中才能生成。但是,如果您有多个基于配置的布局文件,其中某些视图存在于某些布局文件中而某些视图缺失,该怎么办?在这里,您必须手动检查 null。\n污染命名空间 \xe2\x80\x94 您可以在不同的布局中拥有相同的视图 ID,并且您可能会意外导入某些其他布局的视图,这将在运行时抛出 NullPointerException .\n仅限 Kotlin \xe2\x80\x94 Kotlin Synthetics 只能与 Kotlin 一起使用。Java 不支持它们。仍有一些项目是用 Java 编写的,可能尚未完全迁移到 Kotlin,因此 Kotlin Synthetics 可能不是在项目中获取 ViewId 的一致方法。\n由于这些问题,Kotlin Synthetics 现已被弃用。

\n

现在由你来决定是否仍然像我一样使用这个插件,如果你想修复已弃用的警告,你必须避免使用已弃用的方法。

\n