blackbbc/Tucao

代码跑不起来 不知道什么原因,希望能解惑

guuguo opened this issue · 12 comments

报错信息:

Error:Failed to complete Gradle execution.

Cause:
String index out of range: -1

gradle 控制台错误信息:

e: 错误: Exception while handling step android.databinding.annotationprocessor.ProcessExpressions@1e87f01c javax.xml.bind.UnmarshalException
e: 

e:    - with linked exception:
e:   [com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效。]

在Databinding中,我使用了类似这样的绑定:
(取自activity_search.xml)

<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个相关结果" />

注意到android:text这一行,我使用了中文。这在Unix系统下是可以编译通过的,然而在Windows下是无法编译通过的,详见:http://blog.csdn.net/yangheng362/article/details/70186866

谢谢,已经成功跑起来了,希望作者能把中文改成@string方式,方便我们windows用户

我试了下 所有的硬编码写法都不行,只能@string

这算是Windows下开发Android使用DataBinding的常见问题了吧。因为Windows默认使用ANSI编码,简体中文的Windows下即GBK,所以需要加一个环境变量JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8来指定Javac默认的编码。
关于JAVA_TOOL_OPTIONS环境变量
所以不需要全用@string这种方式来替代硬编码,Windows用户一样可以开心地玩耍DataBinding!
@guuguo @blackbbc @StephenGiant

我试过了你的环境变量方式 现在报的是另一个错 我还是把中文替换成string了 毕竟博主用到中文混搭接口数据的地方没几个 改起来也不是很大工作量
@derekdick

@derekdick 怎么配置这个环境变量呢?

@StephenGiant 知道怎么配置环境变量么?

@weiweiForAndroid 配置环境变量的方法是通用的,这个百度一下吧

@derekdick 配置好了,运行的时候提示 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

@weiweiForAndroid 这说明你环境变量配置成功了,忽略就行了

@derekdick 好的 ,多谢。

JAVA_TOOL_OPTIONS

环境变量 俩个= 啥意思