禁用 kotlin-android-extensions 弃用警告

问题描述 投票:0回答:6

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

警告:“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
6个回答
38
投票

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

在 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 扩展编译器插件


18
投票

只需从 Gradle 中删除此行:

apply plugin: 'kotlin-android-extensions'

3
投票

我希望它对未来的读者有所帮助。

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_
     }
}

1
投票

按照以下步骤操作:

  1. kotlin-android-extensions 已弃用,因此请从 kotlin-parcelize
  2. 替换它
  3. 如果模型类使用了 @Parcelize 注解,那么你必须将其从 kotlinx.android.parcel.Parcelize 的导入替换为 import kotlinx.parcelize.Parcelize

0
投票

kotlin-android-extensions
插件已被弃用。 对于迁移,请按照以下步骤操作: 1)在
build.gradle

中启用视图绑定
 android {
    viewBinding {
        enabled = true
    }
}

2) 将

kotlin-parcelize
添加到
build.gradle

plugins {
id 'kotlin-parcelize'

} 3) 从您的项目中删除

kotlin-android-extensions


-3
投票

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

文章说:“如果您的应用程序不使用 Parcelize 功能,请删除启用 Kotlin Android Extensions 的行:(又名,只需删除 apply plugin: 'kotlin-android-extensions' 行)。结果可能是您不这样做”不需要该插件,很难说,因为您没有表明您是否正在使用已弃用插件提供的任何功能。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.