【问题标题】:disable kotlin-android-extensions deprecation warning禁用 kotlin-android-extensions 弃用警告
【发布时间】:2023-04-03 00:20:01
【问题描述】:

我的项目正在迁移到 View Binding,但与此同时,此警告在查看构建日志时会分散注意力

警告:“kotlin-android-extensions”Gradle 插件已弃用。请使用此迁移指南 (https://goo.gle/kotlin-android-extensions-deprecation) 开始使用视图绑定 (https://developer.android.com/topic/libraries/view-binding) 和“kotlin-parcelize”插件。

如何禁用它?

【问题讨论】:

    标签: android kotlin gradle kotlin-android-extensions


    【解决方案1】:

    我最近也遇到了这个问题,发现了。

    在 Kotlin 1.4.20-M2 中,JetBrains 弃用了 Kotlin Android Extensions 编译器插件以支持 View Binding,此外,Google 正在推动模块化,但合成属性不能跨模块工作。

    所以要修复这个警告。删除build.gradle 文件中的apply plugin: 'kotlin-android-extensions'

    注意:如果您使用的是Parcelize

    不要忘记 Kotlin 中的 Parcelize 功能 是 kotlin-android-extensions 编译器插件的一部分,因此删除该插件最终会使所有依赖于 Parcelable 的类无法编译Parcelize 注释。

    JetBrains extracted Parcelize from Kotlin Android Extensions 到一个新插件 kotlin-parcelize

    首先,您需要将 kotlin-parcelize 插件添加到您的项目 build.gradle 文件中。

    Plugins {
       ...
       id 'kotlin-parcelize'
    }
    
    

    然后从

    更改您的旧导入语句

    import kotlinx.android.parcel.Parcelize

    import kotlinx.parcelize.Parcelize

    有关更多信息,我建议您阅读此博客Migrating the deprecated Kotlin Android Extensions compiler plugin

    【讨论】:

    • 据我了解,插件是 id 'kotlin-parcelize' 而不是 id 'Kotlin-parcelize'kotlin-parcelize 中的 k 是小写的。请编辑答案,以免混淆,谢谢。 PS:其他用户不允许单字符编辑。
    • 如果你删除了 apply plugin: 'kotlin-android-extensions' 不要忘记删除 androidExtensions {experimental = true} ;)
    【解决方案2】:

    只需要从 Gradle 中删除这一行即可:

    apply plugin: 'kotlin-android-extensions'
    

    【讨论】:

    • 如果您使用 kotlin 合成,如果您删除 kotlin-android-extensions,则会收到错误消息
    • 该错误消息表明您需要迁移到 ViewBinding
    【解决方案3】:

    该报告警告您正在使用已弃用的插件,我不明白您为什么要禁用它,因为我预计编译迟早会失败,您可能不记得原因。

    文章说:“如果您的应用不使用 Parcelize 功能,请删除启用 Kotlin Android Extensions 的行:(也就是删除行 apply plugin: 'kotlin-android-extensions')。结果可能是你不需要插件,很难说,因为您没有说明您是否使用了已弃用插件提供的任何功能。

    如果您使用“Parcelable”注释任何类,那么您需要做一些工作,如文章中所述。

    编辑:视图合成也消失了(允许您不使用所有那些“findViewById”的功能。那是(IMO)是更大的损失,我还没有移植我的应用程序,所以我无法评论数量移动所需的工作。

    在不久的将来,我选择等待并稍后实施新代码,但您需要自行决定何时适合从已弃用的插件迁移。

    【讨论】:

    • 您可以使用kotlin-parcelize 替换旧KAE 的@Parcelize 行为。就像用import kotlinx.parcelize.Parcelize替换import kotlinx.android.parcel.Parcelize一样简单
    猜你喜欢
    • 2021-03-18
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多