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

Android开发InflateException错误:AppCompatImageView加载Drawable失败

问题:SVG转Drawable后加载报错(Resources$NotFoundException)

将布局背景替换为从29.9Mb SVG文件转换而来的drawable资源img7后,出现加载错误。无论将该drawable设置为AppCompatImageView的src属性还是background属性,均触发相同的Error inflating class androidx.appcompat.widget.AppCompatImageView报错。核心错误为Resources$NotFoundException,底层原因是路径解析时抛出IllegalArgumentException: R is not a valid verb。

完整错误日志

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.hemantmaurya.storemanagementapp, PID: 8595
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hemantmaurya.storemanagementapp/com.hemantmaurya.storemanagementapp.MainActivity}: android.view.InflateException: Binary XML file line #16 in com.hemantmaurya.storemanagementapp:layout/activity_main: Binary XML file line #16 in com.hemantmaurya.storemanagementapp:layout/activity_main: Error inflating class androidx.appcompat.widget.AppCompatImageView
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3645)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3782)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loopOnce(Looper.java:201)
    at android.os.Looper.loop(Looper.java:288)
    at android.app.ActivityThread.main(ActivityThread.java:7872)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
 Caused by: android.view.InflateException: Binary XML file line #16 in com.hemantmaurya.storemanagementapp:layout/activity_main: Binary XML file line #16 in com.hemantmaurya.storemanagementapp:layout/activity_main: Error inflating class androidx.appcompat.widget.AppCompatImageView
 Caused by: android.view.InflateException: Binary XML file line #16 in com.hemantmaurya.storemanagementapp:layout/activity_main: Error inflating class androidx.appcompat.widget.AppCompatImageView
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.newInstance0(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
    at android.view.LayoutInflater.createView(LayoutInflater.java:858)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1010)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1127)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:686)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:538)
    at com.hemantmaurya.storemanagementapp.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:66)
    at com.hemantmaurya.storemanagementapp.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:60)
    at com.hemantmaurya.storemanagementapp.MainActivity.onCreate(MainActivity.kt:12)
    at android.app.Activity.performCreate(Activity.java:8305)
    at android.app.Activity.performCreate(Activity.java:8284)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1417)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3626)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3782)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loopOnce(Looper.java:201)
    at android.os.Looper.loop(Looper.java:288)
    at android.app.ActivityThread.main(ActivityThread.java:7872)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
E/AndroidRuntime: Caused by: android.content.res.Resources$NotFoundException: Drawable com.hemantmaurya.storemanagementapp:drawable/img7 with resource ID #0x7f0700ee
    Caused by: android.content.res.Resources$NotFoundException: File res/drawable/img7.xml from drawable resource ID #0x7f0700ee
    at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:875)
    at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:669)
    at android.content.res.Resources.loadDrawable(Resources.java:1002)
    at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:1017)
    at android.content.res.TypedArray.getDrawable(TypedArray.java:991)
    at android.view.View.<init>(View.java:5579)
    at android.widget.ImageView.<init>(ImageView.java:196)
    at android.widget.ImageView.<init>(ImageView.java:191)
    at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:78)
    at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:73)
    at java.lang.reflect.Constructor.newInstance0(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
    at android.view.LayoutInflater.createView(LayoutInflater.java:858)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1010)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1127)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:686)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:538)
    at com.hemantmaurya.storemanagementapp.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:66)
    at com.hemantmaurya.storemanagementapp.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:60)
    at com.hemantmaurya.storemanagementapp.MainActivity.onCreate(MainActivity.kt:12)
    at android.app.Activity.performCreate(Activity.java:8305)
    at android.app.Activity.performCreate(Activity.java:8284)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1417)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3626)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3782)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loopOnce(Looper.java:201)
    at android.os.Looper.loop(Looper.java:288)
    at android.app.ActivityThread.main(ActivityThread.java:7872)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
 Caused by: java.lang.IllegalArgumentException: R is not a valid verb. Failure occurred at position 2 of path: STRING_TOO_LARGE
    at android.util.PathParser.nCreatePathDataFromString(Native Method)
    at android.util.PathParser.-$$Nest$smnCreatePathDataFromString(Unknown Source:0)
    at android.util.PathParser$PathData.<init>(PathParser.java:79)
    at android.graphics.drawable.VectorDrawable$VFullPath.updateStateFromTypedArray(VectorDrawable.java:2043)
    at android.graphics.drawable.VectorDrawable$VFullPath.inflate(VectorDrawable.java:1994)
    at android.graphics.drawable.VectorDrawable.inflateChildElements(VectorDrawable.java:840)
    at android.graphics.drawable.VectorDrawable.inflate(VectorDrawable.java:738)
    at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:141)
    at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1394)
    at android.graphics.drawable.Drawable.createFromXmlForDensity(Drawable.java:1355)
E/AndroidRuntime:     at android.content.res.ResourcesImpl.loadXmlDrawable(ResourcesImpl.java:907)
    at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:861)
        ... 37 more

相关布局代码

布局根容器设置背景

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:background="@drawable/img7">

AppCompatImageView设置src

<androidx.appcompat.widget.AppCompatImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/img7"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

AppCompatImageView设置background

<androidx.appcompat.widget.AppCompatImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/img7"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

解决方案

核心原因

你的SVG文件体积达到29.9Mb,属于超大型SVG。Android的VectorDrawable解析器在处理这类文件时,会因为路径数据过长被系统截断,导致解析出无效的路径指令(比如截断后出现单独的"R",而SVG路径指令中并没有这个动词),最终触发资源找不到的异常。

具体解决步骤

  • 压缩优化SVG文件:
    简化SVG的路径结构,移除冗余节点、重复图形、注释和元数据。这类超大SVG通常包含大量不必要的高精度坐标或重复元素,压缩后体积会大幅减小,避免解析时被截断。
  • 转换为Bitmap格式:
    如果SVG过于复杂难以有效压缩,直接将其导出为PNG或JPG格式,放入对应分辨率的drawable目录(如drawable-xhdpi、drawable-xxhdpi)。Bitmap不会触发VectorDrawable的解析问题,更适合作为大图使用。
  • 检查SVG语法:
    验证原SVG是否存在语法错误,比如无效的路径指令、未闭合的路径等,修复后再导入项目。
  • 避免用超大VectorDrawable做背景/大图:
    VectorDrawable的设计初衷是小图标,超大图建议使用Bitmap或者分块加载的方式,避免解析性能问题和异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:48:09