平時使用的jdk都是Android studio默認的,也沒怎么去注意。昨天同事問我對Java8了解不,趁今天有時間去學習了下。
這里主要講在配置jdk1.8時遇到的問題,是在是想吐槽,坑。。。
首先,你的項目依賴的jdk要是jdk1.8的, 可以在
圖片.png
圖片.png
來配置。
然后在moudle的build.gradle中添加
android{
defaultConfig {
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}
這樣你就能使用jdk1.8中的新特性了!但是,但是!!
當我在對textView設置內容的時候 tvHello.setText("這是中文");
悲劇發生了,是的,中文亂碼了...
先以為導入配置之后編碼格式出錯,默默的檢查了設置,沒錯啊,全是UTF-8的啊。再向同事問了他那天有沒有這個問題,他說沒,然后就在那蛋疼了半天...后來看見有另一種導入的方法也能使用Lambda,比較了下發現沒有啟用Jack,我屮艸芔茻,默默的百度了Jack導致中文亂碼,果然有,香菇,藍瘦...吐槽完,爽多了 = =
以下是解決辦法
圖片.png
恩,重新編譯,好了。。。
原因是:
查詢后發現這是Jack編譯器的一個bug,Jack使用的是操作系統的默認編碼,UTF-8編碼的文件經過編譯后,其中的非ASCII字符就會變成亂碼。
百度到的博客: http://blog.csdn.net/ljh102/article/details/52916019