android数据绑定错误:任务执行失败’:app:dataBindingProcessLayoutsDebug’
我的伙伴在我们的’项目中使用android databinding.in我的电脑有错误,但在他的mac不错误。我无法解决这个程序。请帮助!! 这是我的构建gradle:
dataBinding { enabled = true }
第一个构建androidstudio说
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.
然后我重新保存XML文件使用UTF-8.但是出现了一个新问题。就像这样:
:app:dataBindingProcessLayoutsDebug line 1:0 mismatched input '?' expecting {COMMENT, SEA_WS, '<', PI} Error:Execution failed for task ':app:dataBindingProcessLayoutsDebug'.
java.lang.NullPointerException(无错误消息)
0 ? postDetail.picList.get(0) : ``}" bind:width="@{Utils.getPostImgWidth(Utils.getPostType(postDetail.picList))}" bind:height="@{Utils.getPostImgHeight(Utils.getPostType(postDetail.picList))}" />
我有同样的问题,我终于找到了解决方案。
我发现有一个布局xml文件是这样编写的:
然后它无法在Windows平台上构建,但它可以在Mac OS X平台上构建,我认为它是Android数据绑定的一个bug,所以我的临时解决方案是:
不要在@{}
部分写任何字符,而是使用字符串引用。 (在我的例子中,它替换为android:text='@{ @string/age_text + String.valueOf(user.age) }'/>
)
希望它能帮助你。
我对这个日志有同样的问题:
line 1:0 extraneous input '' expecting {COMMENT, SEA_WS, '<', PI}
这对我来说非常奇怪,没有真正的反馈。 解决它:
- 创建新的布局资源文件
- 复制并粘贴原始内容,只留下第一个字符
- 在新文件中自己添加它。
一天遇到同样的问题,终于找到了根本原因。 Andoid gradle插件不能很好地处理带字节顺序标记(BOM)的编码。 这是一个编码读取问题。 如果文件以UTF-8 BOM格式保存,Android gradle工具将使用UniversalDetector库检测编码为“UTF-8”。 android.databinding.tool.store.LayoutFileParser
类将如下所示:
InputStreamReader reader = new InputStreamReader(fin, “UTF-8”);
reader.read()
返回的第一个字符是0xfeff
。 是的,它是‘?’ 错误消息line 1:0 mismatched input '?' expecting {COMMENT, SEA_WS, '<', PI}
line 1:0 mismatched input '?' expecting {COMMENT, SEA_WS, '<', PI}
。
请参阅https://en.wikipedia.org/wiki/Byte_order_mark上的幻灯片数量
UniversalDetector如何在http://chardet.readthedocs.io/en/latest/how-it-works.html上工作
我也有这个错误。 在我的情况下,我在布局文件的底部有一个冗余的xml标头。
尝试删除空格(或删除标题),更改:
至...