编译成功运行失败。。
quert999 opened this issue · 10 comments
quert999 commented
报错提示
Error:Failed to complete Gradle execution.
Cause:
String index out of range: -1
quert999 commented
翻了一下gradle console,找到以下报错:
Note: there were 11 duplicate class definitions.
e: 错误: Exception while handling step android.databinding.annotationprocessor.ProcessExpressions@2515ecd5 javax.xml.bind.UnmarshalException
e:
e: - with linked exception:
e: [com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效。]
quert999 commented
我在每个build.gradle文件都添加了task,依然报这个错。。
quert999 commented
给dalao递茶,求dalao指导= =。
blackbbc commented
那篇博客给出的task方法我没有试过
但是根本解决方法是将所有含有中文的地方都用@string代替
例如
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text='@{"共:" + viewModel.totalCount + "个相关结果"}'
android:textColor="@color/secondary_text"
android:textSize="12sp"
android:visibility="@{viewModel.totalCountVisibility}"
tools:text="共:274个相关结果" />
在values/strings.xml里加入如下字符串
<string name="gong">共</string>
<string name="jieguo">个相关结果</string>
然后上面的android:text
替换成
android:text='@{@string/gone + viewModel.totalCount + @string/jieguo}'
我不这么做的原因有以下几个:
- 工作量太大了,所有有中文的地方都要替换
- 我主要针对国内用户,不用做多语言支持
- 不优雅,破坏了Databinding直观的体验
- 我是Linux用户
quert999 commented
我去试试, 拜谢dalao
guuguo commented
quert999 commented
懂了,谢谢dalao
quert999 commented
@derekdick dalao给力