gradle 禁用kotlin-android-extensions过时警告

h7appiyu  于 2023-03-08  发布在  Kotlin
关注(0)|答案(5)|浏览(529)

我的项目正在迁移到ViewBinding,但是在查看构建日志时,这个警告会分散注意力
警告:“kotlin-android-extensions”Gradle插件已弃用。请使用此迁移指南(https://goo.gle/kotlin-android-extensions-deprecation)开始使用视图绑定(https://developer.android.com/topic/libraries/view-binding)和“kotlin-parcelize”插件。
如何禁用它?

lokaqttq

lokaqttq1#

我最近也面临这个问题,并发现。
在Kotlin1.4.20-M2中,JetBrains弃用了Kotlin Android Extensions编译器插件,转而支持视图绑定,并且Google正在推动模块化,但合成属性不能跨模块工作。
因此,要修复此警告,请删除build.gradle文件中的apply plugin: 'kotlin-android-extensions'
注意:如果使用打包
不要忘记Kotlin中的Parcelize特性是kotlin-android-extensions编译器插件的一部分,因此删除该插件将导致所有依赖Parcelize注解的Parcelable类无法编译。
JetBrains**extracted**从KotlinAndroid扩展包到新插件kotlin-parcelize
首先,您需要将kotlin-parcelize插件添加到您的项目build.gradle文件中。

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

然后将旧的import语句从
import kotlinx.android.parcel.Parcelize

import kotlinx.parcelize.Parcelize
如需了解更多信息,我建议您阅读此博客Migrating the deprecated Kotlin Android Extensions compiler plugin

nukf8bse

nukf8bse2#

您只需从Gradle中删除这一行:

apply plugin: 'kotlin-android-extensions'
sulc1iza

sulc1iza3#

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

构建版本.gradle(:应用程序):

android
{
...
buildFeatures 
    {
        viewBinding = true
    }
}

将其添加到Kotlin-plot。因为它执行“kotlin-android-extensions”提供的功能。

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

必须将minifyEnabled设置为True

buildTypes 
   {
        release 
        {
            minifyEnabled true
            ...
        }
    }

主要活动.kt

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 degistir(view : View){
        binding.textView.text = "Hello Android" _//worked_
     }
}
qacovj5a

qacovj5a4#

请按照以下步骤操作:
1.* * kotlin-android-extensions已弃用,因此请从kotlin-parcelize替换它
1.如果模型类使用了@Parcelize注解,则必须将其从
kotlinx. android. parcelize. Parcelize的导入替换为导入kotlinx. parcelize. Parcelize**

2hh7jdfx

2hh7jdfx5#

报告是一个警告,你正在使用一个过时的插件,我不明白为什么你会想禁用它,因为迟早我预计编译将失败,你可能不记得为什么。
文章说:"如果您的应用不使用Parcelize功能,请删除启用Kotlin Android扩展的行:(又名,只是删除行应用插件:'kotlin-android-extensions')。结果可能是您不需要该插件,很难说,因为您没有指明是否正在使用该已弃用插件提供的任何功能。
如果您正在使用"Parcelable"注解任何类,那么您需要做一些工作,如本文所述。
编辑:视图合成(允许你不使用所有这些"findViewById"的功能)也消失了。这是(IMO)更大的损失,我还没有移植我的应用程序,所以我不能评论移动它所需的工作量。
在不久的将来,我选择了等待并在以后实现新代码,但您需要自己决定何时适合从已弃用的插件中迁移。

相关问题