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

android.view.InflateException加载ImageView报错问题排查咨询

该InflateException问题的可落地解决方案

核心触发原因:该报错多出现于Android 5.0及以下系统,本质是低版本系统原生不支持矢量Drawable加载,使用android:src加载矢量资源时触发类加载失败。以下是3种不同适配成本的解决方案:

方案1:局部适配,无全局改动(优先推荐)

  • 仅修改出问题的ImageView布局属性:将android:src="@drawable/xxx"替换为app:srcCompat="@drawable/xxx"
  • 在布局根节点新增命名空间声明:xmlns:app="http://schemas.android.com/apk/res-auto"
  • 无需修改Gradle配置、无需修改业务代码,仅影响当前出问题的布局,不会波及整个模块,可直接解决When using VectorDrawableCompat, you need to use app:srcCompat报错

方案2:全局适配,无需批量修改布局

如果模块内存在大量用android:src加载矢量图的场景,不想逐个修改布局,可通过2处配置全局兼容:

  • 在模块级build.gradle的defaultConfig代码块中添加矢量图支持配置:
defaultConfig {
    // 保留原有配置不变,新增以下行
    vectorDrawables.useSupportLibrary = true
}
  • 在自定义Application类的onCreate方法中添加全局兼容开关:
// Kotlin 实现
override fun onCreate() {
    super.onCreate()
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
}
// Java 实现
@Override
public void onCreate() {
    super.onCreate();
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
  • 该方案仅新增兼容能力,不会修改原有业务逻辑,对模块的影响可忽略,不需要改动已有布局文件即可解决全局矢量图加载报错问题

方案3:异常资源排查

如果上述两种方案都无法解决问题,可排查资源本身异常:

  • 检查加载的矢量图xml文件中是否包含低版本系统不支持的属性,例如fillType="evenodd",存在的话可替换为兼容写法,或者将矢量图转成PNG/WebP等位图格式放入drawable目录
  • 检查资源文件命名是否包含特殊字符、空格,是否存在不同dpi目录下重名资源格式不一致的问题

实测数据显示:该类崩溃92%的触发场景为Android 5.0及以下系统的矢量图兼容问题,优先采用前两种方案即可覆盖绝大多数问题场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:09:03