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} 

这对我来说非常奇怪,没有真正的反馈。 解决它:

  1. 创建新的布局资源文件
  2. 复制并粘贴原始内容,只留下第一个字符
  3. 在新文件中自己添加它。

一天遇到同样的问题,终于找到了根本原因。 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标头。

尝试删除空格(或删除标题),更改:

    

至...