在 Android 字符串资源中直接使用 Emoji

问题描述

某些情况下,类似的在 string.xml 中定义这样的带 emoji 表情的字符串可以使得提示更加的生动和形象

<string name="hot">🔥Hot</string>

直接打包运行在高版本的 Android 上,例如 7.0 应该是没有问题的,但如果在需要兼容 4.0 那么还需要多几步操作,否则 crash

  1. 启用 utf-16 编码
android {
    aaptOptions {
        additionalParameters '--utf16'
    }
}
  1. 如果你使用的 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。