最近一个新同事加入,他用的windows,拉代码之后跑不了,一直报错,看起来是databinding的问题。
Error:Execution failed for task ':app:compileBetaDebugJavaWithJavac'.
> java.lang.RuntimeException: failure, see logs for details.
Exception while handling step android.databinding.annotationprocessor.ProcessExpressions@6b544592 javax.xml.bind.UnmarshalException
- with linked exception:
[org.apache.xerces.impl.io.MalformedByteSequenceException: Invalid byte 3 of 3-byte UTF-8 sequence.]
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:333)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:563)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:249)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:214)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:204)
at android.databinding.tool.store.ResourceBundle$LayoutFileBundle.fromXML(ResourceBundle.java:634)
at android.databinding.annotationprocessor.ProcessExpressions$IntermediateV2.appendTo(ProcessExpressions.java:278)
at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:82)
at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:189)
at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:174)
at android.databinding.annotationprocessor.ProcessDataBinding.process(ProcessDataBinding.java:79)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironme
于是google,说是使用了databinding的xml文件中有中文。奔溃ing。没办法只能全局搜索然后改成string引用。类似以下这些全部改掉就好了
android:text="@={‘¥’+viewModel.rechargeMoney}"
或者
android:text="@={‘-’+viewModel.rechargeMoney}"
又或者
android:text="@={‘退’+viewModel.rechargeMoney}"
等等。。。
改成以下这种形式就可以了
android:text="@={@string/text+viewModel.rechargeMoney}"