也談DataBinding遇到的惡心的Bug,踩坑踐行者。

項(xiàng)目中遇到的一個(gè)問(wèn)題,分享出來(lái),希望大家可以不踩這個(gè)坑

前話,公司是用Mac開(kāi)發(fā),在家里有時(shí)候會(huì)用Win加加班,公司的項(xiàng)目有幾個(gè)使用了Databinding,在Mac上運(yùn)行都是沒(méi)有問(wèn)題的,我推到Git上,回家拉下來(lái),其中的一個(gè)報(bào)錯(cuò)了,另外的都沒(méi)有問(wèn)題!

分析問(wèn)題
  • 公司項(xiàng)目本身沒(méi)有錯(cuò),在家里報(bào)錯(cuò),問(wèn)題應(yīng)該不在代碼層面上
  • 之前處理過(guò)一次utf8的問(wèn)題,win下gradle 添加這么一行東西
tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

那么這一次極有可能仍然是編碼的問(wèn)題,其中報(bào)錯(cuò)有兩行比較重要的摘錄出來(lái)
android.databinding.annotationprocessor.ProcessExpressions@65ff4c24 javax.xml.bind.UnmarshalException with linked exception:
Caused by: org.apache.xerces.impl.io.MalformedByteSequenceException: Invalid byte 3 of 3-byte UTF-8 sequence.

我們遇到的坑大概率是別人踩過(guò)的坑,Google或者其他的搜索引擎,據(jù)說(shuō)是IDE的一部分,于是找到了這個(gè)博客,確定了自己的猜測(cè)。

http://blog.csdn.net/lablenet/article/details/52305529

題外話&問(wèn)題原因&個(gè)人習(xí)慣

Databinding最好的使用,通常是后臺(tái)返回直接展示的數(shù)據(jù),而實(shí)際上后臺(tái)返回的數(shù)據(jù)有時(shí)候需要我們?cè)谔幚硪幌?,我的同事的方法是跟鏈接博客中一樣,喜歡在xml里面做操作,(比如android:text='@{monthBean.onlineCount+"單"}')我自己則是喜歡在bean對(duì)象里面做處理,通過(guò)前綴為getStringXXX的方式來(lái)獲取,而導(dǎo)致這個(gè)問(wèn)題原因正是因?yàn)樵趚ml里面做拼接的字符不能被正確的解析,那么問(wèn)題來(lái)了,另外其他的項(xiàng)目,同事也有在外面做處理,為什么沒(méi)有報(bào)錯(cuò),猜測(cè)是特定的字符不能被解析造成的。

剩下的就是力氣活,由于有段時(shí)間沒(méi)有拉這個(gè)代碼,積累的較多,我不能確定是什么時(shí)候造成的,只能猜測(cè)著用Git不斷的切換,定位到產(chǎn)生的原因.
不管怎樣終于找到了,奇怪的是有的拼接沒(méi)有問(wèn)題有的拼接有問(wèn)題,這其實(shí)是另外兩個(gè)同事寫的,看來(lái)同樣是mac還是有些差別,anyway總算解決了可以繼續(xù)寫應(yīng)該寫的了.

android:text='@{monthBean.onlineCount+"單"}'            報(bào)錯(cuò)
android:text='@{billCheckoutInfo.runKm+ "公里"}'      不報(bào)錯(cuò)```

#####解決和建議
```android:text='@{monthlyBeanBinding.onlineCount + @string/dan}'```
我會(huì)在跟同事核實(shí)為什么一個(gè)人的拼接沒(méi)問(wèn)題另一個(gè)人報(bào)錯(cuò),建議是用getStringXXX的方式來(lái)拼接,那樣可以避免這些問(wèn)題,如果非要拼接就要用@String/XXX的方式.
希望以后不要再遇到這樣的問(wèn)題,耽擱了一段時(shí)間,但是我還是喜歡win系統(tǒng),總感覺(jué)文件系統(tǒng)就應(yīng)該是win這樣而不是mac那樣,很不習(xí)慣.
###測(cè)試評(píng)論網(wǎng)友的方法好用
有人詢問(wèn)是如何配置,截圖貼明,編譯時(shí)候會(huì)有嘆號(hào),不過(guò)沒(méi)關(guān)系,就跟高德地圖報(bào)錯(cuò)864個(gè),但是不影響使用.

![圖片.png](http://upload-images.jianshu.io/upload_images/1927528-628f12d0330b42dd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

最后放上CC
![圖片.png](http://upload-images.jianshu.io/upload_images/1927528-9bc3ee3b692c99c3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,113評(píng)論 25 709
  • 谷歌出 Databinding 有一段時(shí)間了,除了做Demo我也在項(xiàng)目中使用著,感覺(jué)還不錯(cuò),這里記錄一下使用 Da...
    壹?jí)m子閱讀 8,767評(píng)論 4 11
  • Data Binding Library 是一個(gè)非常厲害的的數(shù)據(jù)綁定框架,通過(guò)數(shù)據(jù)綁定框架可以給我們帶來(lái)很大的方便...
    fodroid閱讀 4,743評(píng)論 2 3
  • 中午英文補(bǔ)課,和同桌嗑叨了一下吃的,於是那個(gè)溫柔的女老師突然叫我讀文章的一段話,起初我還不知發(fā)生了什麼事,我右邊的...
    是朝十二閱讀 191評(píng)論 0 0
  • 第一次知道《送你一顆子彈》這本書,是在熹文姐的微信推文里,她的文章里引用了這段話:“一個(gè)人就像一支隊(duì)伍,對(duì)著自己的...
    涼小茜閱讀 2,310評(píng)論 2 15

友情鏈接更多精彩內(nèi)容