問題描述
某些情況下,類似的在 string.xml 中定義這樣的帶 emoji 表情的字符串可以使得提示更加的生動和形象
<string name="hot">??Hot</string>
直接打包運行在高版本的 Android 上,例如 7.0 應該是沒有問題的,但如果在需要兼容 4.0 那么還需要多幾步操作,否則 crash
- 啟用 utf-16 編碼
android {
aaptOptions {
additionalParameters '--utf16'
}
}
- 如果你使用的 Android Gradle 編譯插件是 3.0.0 以上,那么會默認啟用 Appt2 來打包資源,Appt2 不支持 utf16 編碼的,所以在編譯的時候會出錯,所以需要在 gradle.properties 禁用 Appt2
android.enableAapt2=false
以上,就可以在 4.0 以上直接使用 emoji 表情了
潛在問題
Android Gradle 編譯插件在 3.2 的時候移除了 Appt1,所以暫時不能把編譯腳本版本升級到 3.2,也不知道 Google 會不會修復這個問題,不過也沒什么關系的,即使以后不支持而你又需要新的編譯腳本,把 emoji 去掉就可以
參考
App Crash when minSdk==9 and string resource includes an emoji