错误
android 项目编译报错
符号: 类 shape
位置: 程序包 android.widget
详细错误
Compiling with JDK Java compiler API.
D:\AndroidProjects\ElectronicMall\app\build\generated\data_binding_base_class_source_out\debug\out\com\example\electronicmall\databinding\OrderEdtNoteBgBinding.java:7: 错误: 找不到符号
import android.widget.shape;^符号: 类 shape位置: 程序包 android.widget
D:\AndroidProjects\ElectronicMall\app\build\generated\data_binding_base_class_source_out\debug\out\com\example\electronicmall\databinding\OrderEdtNoteBgBinding.java:17: 错误: 找不到符号private final shape rootView;^符号: 类 shape位置: 类 OrderEdtNoteBgBinding
D:\AndroidProjects\ElectronicMall\app\build\generated\data_binding_base_class_source_out\debug\out\com\example\electronicmall\databinding\OrderEdtNoteBgBinding.java:19: 错误: 找不到符号private OrderEdtNoteBgBinding(@NonNull shape rootView) {^符号: 类 shape位置: 类 OrderEdtNoteBgBinding
D:\AndroidProjects\ElectronicMall\app\build\generated\data_binding_base_class_source_out\debug\out\com\example\electronicmall\databinding\OrderEdtNoteBgBinding.java:25: 错误: 找不到符号public shape getRoot() {^符号: 类 shape位置: 类 OrderEdtNoteBgBinding
D:\AndroidProjects\ElectronicMall\app\build\generated\data_binding_base_class_source_out\debug\out\com\example\electronicmall\databinding\OrderEdtNoteBgBinding.java:50: 错误: 找不到符号return new OrderEdtNoteBgBinding((shape) rootView);^符号: 类 shape位置: 类 OrderEdtNoteBgBinding
注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: 某些输入文件使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
5 个错误> Task :app:compileDebugJavaWithJavac FAILED
:app:compileDebugJavaWithJavac (Thread[Execution worker for ':' Thread 11,5,main]) completed. Took 5.685 secs.
AAPT2 aapt2-7.2.1-7984345-windows Daemon #0: shutdown
解决方案
对于XXXBinding错误
双击shift(全局搜索快捷键), 将XXX放入搜索框搜索,找到文件中标红错误, 鼠标放置标红错误处查看具体语法错误, 修改该错误
原因
View Binding是Android Studio 3.6推出的新特性,目的是为了替代findViewById(内部实现还是使用findViewById)。在启动视图绑定后,系统会为改模块中的每个xml文件生成一个绑定类,绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。
对于XXXBinding错误, 查找所编写的XXX文件(注意:文件是指xml视图文件), 查找XXX时, 由于系统生成的绑定类采用首字母大写的驼峰命名法, 但是开发人员可能采取下划线命名法(android 不支持xml视图文件中包含大写字母), 因此比对过程中注意所找文件与XXX大小写不一致
以笔者而言
报错文件
OrderEdtNoteBgBinding
出错文件
order_edt_note_bg
笔者误将drawable同时拷贝至layout, 但layout无法解析shape, corners, stroke标签, 这属于语法错误, 但是系统建立项目(build project)时只会为改模块中的每个xml文件生成一个绑定类, 不解析每个xml文件是否存在语法错误, 运行时在解析绑定类过程中发现无法解析java 语句, 因此产生 android 项目编译报错
符号: 类 shape
位置: 程序包 android.widget
参考文献
Android View Binding的使用
原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈