Android 10设备TextView无法显示木匠🪚emoji,使用AndroidX Emoji库仍无效
木匠🪚emoji Android端异常显示解决方案
问题根因
- 木匠🪚emoji属于Unicode 12.0标准新增字符,诺基亚6.1 Plus搭载的Android 10原生系统内置的默认emoji字体最高仅支持Unicode 11.0,未内置对应字符渲染资源就会显示矩形占位符
- 不同厂商定制系统的emoji字体适配进度不同,三星定制系统提前完成了Unicode 12.0适配,所以可以正常渲染该字符
可行修复方案
方案1:升级AndroidX Emoji Compact版本
- 你当前使用的1.1.0版本AndroidX Emoji Compact仅适配到Unicode 11.0,需升级到
2.0.0及以上版本,该版本开始支持Unicode 12.0及更高版本的emoji字符 - 配置注意事项:
- Application启动时提前初始化EmojiCompat,配置为预加载模式,避免首次渲染时出现占位符
- 所有展示文本的控件统一替换为EmojiTextView、EmojiEditText等兼容控件,不要使用原生TextView承载含emoji的文本
方案2:适配vanniktech/Emoji库配置
- 你当前引用的库版本需升级到0.15.0及以上,该版本开始包含Unicode 12.0的emoji资源
- 初始化时需要显式指定使用Google emoji变体,调用
EmojiManager.install(GoogleEmojiProvider()),不要使用默认的系统provider配置,否则还是会调用系统内置字体渲染
方案3:自定义全局emoji字体 fallback
- 将最新版本的Noto Color Emoji字体打包到app assets目录
- 自定义全局TextView的绘制逻辑,当检测到系统无法渲染的emoji字符时,自动fallback到内置的最新字体完成渲染
验证操作
完成对应配置后,卸载原有应用重装,清理应用缓存后重新打开目标页面,即可确认🪚emoji是否恢复正常渲染。
内容的提问来源于stack exchange,提问作者Bipin Vayalu
相关产品推荐
相关产品推荐

