You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

应用启动即崩溃:Error inflating class android.support.text.emoji.widget.EmojiTextView

解决Android低版本(SDK<=24)EmojiTextView布局加载崩溃问题

这个坑我之前帮团队排查过好几次,你的情况是典型的EmojiTextView在Android 7.0及以下系统的兼容性问题——因为API 25及以上系统原生对Emoji支持做了优化,而低版本系统需要额外的配置才能让Emoji组件正常工作,不然就会触发InflateException。

下面是一步步的解决方案:

1. 替换并更新Emoji依赖库

旧的support版本Emoji库在低版本系统上兼容性很差,建议直接切换到AndroidX的Emoji库。打开你Module级别的build.gradle,添加以下依赖:

implementation "androidx.emoji:emoji:1.2.0"
implementation "androidx.emoji:emoji-appcompat:1.2.0"

如果之前用的是android.support.text.emoji.widget.EmojiTextView,一定要把XML里的控件全替换成AndroidX版本的androidx.emoji.widget.EmojiTextView,不然依赖和控件不匹配还是会崩。

2. 在Application中初始化Emoji支持

低版本系统不会自动加载Emoji所需的字体资源,必须提前初始化。创建或修改你的自定义Application类,在onCreate方法里添加初始化代码:

@Override
public void onCreate() {
    super.onCreate();
    // 针对API<=24的系统初始化Emoji兼容配置
    EmojiCompat.Config config = new AppCompatEmojiCompatConfig(this);
    EmojiCompat.init(config);
}

别忘了在AndroidManifest.xml里把android:name指向你的自定义Application类。

3. 检查资源混淆规则

如果你的项目开了资源混淆,很可能会把Emoji相关的字体资源给误删或者混淆掉。打开proguard-rules.pro,添加以下规则保护Emoji资源:

-keep class androidx.emoji.** { *; }
-keep class androidx.core.text.** { *; }
-keepresources string/emoji_font_metadata**

为什么SDK>24时正常?

Android 7.1(API 25)及以上系统原生集成了Emoji相关的系统服务和资源,不需要依赖第三方库的初始化就能加载EmojiTextView,所以不会出现崩溃。而API 24及以下系统没有这个原生支持,必须通过库的初始化来加载Emoji字体和相关组件。

内容的提问来源于stack exchange,提问作者Kevin Toner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:19:36