You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio提示kotlin-android-extensions插件已弃用,该如何迁移?

迁移至View Binding替代kotlin-android-extensions指南

1. 更新Gradle插件配置

首先移除废弃的kotlin-android和kotlin-android-extensions插件,开启View Binding功能;若之前用到了Parcelize序列化功能,需添加kotlin-parcelize插件替代:

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    // 移除kotlin-android、kotlin-android-extensions插件
    id 'kotlin-parcelize' // 原Parcelize功能依赖此插件
}

android {
    // 保留原有编译SDK、minSDK等配置

    buildFeatures {
        viewBinding true // 开启View Binding
    }
}

2. 修改Activity代码,用View Binding访问控件

原来直接通过ID调用控件的方式,需要替换为View Binding实例调用:

旧代码(kotlin-android-extensions方式):

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        // 直接用XML中的ID访问控件
        tv_greeting.text = "Hello"
    }
}

新代码(View Binding方式):

class MainActivity : AppCompatActivity() {
    // 声明对应布局的Binding实例
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 初始化Binding并设置ContentView
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        
        // 通过binding实例访问控件ID
        binding.tvGreeting.text = "Hello"
    }
}

注:ActivityMainBinding是系统根据布局文件名自动生成的类(如activity_main.xml对应ActivityMainBinding),XML中所有带ID的控件都会成为该类的属性。

3. 额外场景处理

  • 若布局使用<include>标签,需给include设置android:id,生成的Binding类会包含对应子布局的Binding实例,可直接通过binding.includeId.subViewId访问子控件。
  • 原kotlin-android-extensions的@Parcelize注解,迁移后只需保留注解本身即可,kotlin-parcelize插件会提供完全一致的功能。

内容的提问来源于stack exchange,提问作者soham kumthekar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:42:50