Android Studio新手求助:Kotlin Android Extensions插件已弃用,如何迁移?
迁移Kotlin Android Extensions到View Binding(新手友好版)
Kotlin Android Extensions(KAE)已被官方废弃,最适合新手的替代方案是View Binding,跟着以下步骤操作即可完成迁移:
1. 移除废弃插件
打开项目中的app/build.gradle(注意是Module级的配置文件,不是根目录的全局配置),找到plugins代码块,删掉其中的id 'kotlin-android-extensions'行。
修改前:
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'kotlin-android-extensions' // 此行删除 }
修改后:
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' }
2. 启用View Binding
同样在app/build.gradle的android代码块内,添加View Binding的配置:
android { namespace "com.your.package.name" // 保留你的包名,无需修改 compileSdk 34 // 保留你的SDK版本,无需修改 defaultConfig { applicationId "com.your.package.name" minSdk 24 targetSdk 34 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } // 新增这部分配置 buildFeatures { viewBinding true } // 保留其他原有配置... }
添加完成后,点击右上角的Sync Now同步Gradle配置。
3. 修改MainActivity代码
原来直接用控件ID(如button1、editText1)的写法,替换为View Binding的调用方式:
原KAE写法(需替换):
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 直接通过ID调用控件 button1.setOnClickListener { val input = editText1.text.toString() } } }
新View Binding写法:
import com.your.package.name.databinding.ActivityMainBinding // 替换为你的实际包名 class MainActivity : AppCompatActivity() { // 声明Binding对象,用lateinit延迟初始化 private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 初始化Binding,替代原setContentView binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) // 通过binding.控件ID调用控件 binding.button1.setOnClickListener { val inputText = binding.editText1.text.toString() // 编写你的点击逻辑 } // 其他按钮同理,比如binding.button2.setOnClickListener(...) } }
关键注意点
ActivityMainBinding是Android Studio自动生成的类,命名规则为:布局文件名(如activity_main.xml)转为驼峰式后加Binding后缀。如果找不到这个类,点击顶部菜单栏Build -> Make Project重新编译即可生成。- 所有原直接用ID调用的控件,现在都要加上
binding.前缀,比如binding.button3、binding.editText2。
完成以上步骤后,就完全替代了KAE的功能,且是官方推荐的方案,不会再出现废弃提示。
内容的提问来源于stack exchange,提问作者Muhammad Hassan
相关产品推荐
相关产品推荐

