kotlin-android-extensions
是用于提供视图绑定功能,用于减少 findViewById
代码的编写,只许在Activity中引入类似import kotlinx.android.synthetic.main.activity_main.* //导入这个
的包,即可直接以viewid去得到view控件。本来是一个很好的插件,但是该插件被开发团队所废弃,取而代之的是使用ViewBinding
进行替代,所以对于使用了该项目的老项目,需要进行迁移。
由于是刚接手的一个老项目,按照官方文档说明,在build.gradle
中移除kotlin-android-extensions
并启用ViewBinding
后 ,替换布局中的view引入即可,但是在项目编译时报如下错误:
Build file '/Users/apple/android/Projects/XXX/Component/lib-base/build.gradle' line: 12
A problem occurred evaluating project ':Component:lib-base'.
> No signature of method: build_1h5vxjnn30a759t1blwt5q5ag.android() is applicable for argument types: (build_1h5vxjnn30a759t1blwt5q5ag$_run_closure1) values: [build_1h5vxjnn30a759t1blwt5q5ag$_run_closure1@271912e5]
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.GradleScriptException: A problem occurred evaluating project ':Component:lib-base'.
通过对build.gradle
文件进行逐行检查,通过逐行注释的方式注释掉相关代码进行编译来检查是否能编译成功。一般遇到gradle的编译问题,都可以采取这种方式进行检查。
经排查,发现build.gradle
文件中有如下一段代码:
androidExtensions {
experimental = true
}
把以上代码移除后,编译成功。
经查,以上代码的作用是 使用kotlin-android-extensions
插件时,用以启用插件的实验性功能。 如果有同样遇到该问题的朋友,可以尝试这种方式解决。