由于android.view.InflateException二进制XML文件第101行引起,由android.content.res.Resources$NotFoundException引起。

9

从Crashlytics得到了这个错误,会影响一些设备:

由android.view.InflateException引起 二进制XML文件行#101:二进制XML文件行#101:错误膨胀类

由android.content.res.Resources$NotFoundException引起 Drawable(缺少名称),资源ID#0x7f06008a

有趣的是,这只发生在我使用新的Android App Bundle发布应用程序之后。 当发布.apk时不会发生这种情况。 事实上,为了解决它,我回退到将其发布为.apk。 但我想享受使用新的Android App Bundle发布的好处。 我知道这与Drawable文件夹有关。 这是xml文件中的第101行:

<ImageView
    android:id="@+id/learn_chords_help_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="0dp"
    android:paddingTop="20dp"
    android:src="@drawable/help"
    android:contentDescription="Learn Chords Help"
    android:layout_toRightOf="@id/learn_chords_button"
    android:layout_above="@id/creditText"
    />

以下是我所有带/不带 help.png 的可绘制文件夹:
drawable -> help.png
drawable-hdpi -> help.png
drawable-nodpi -> No Help image
drawable-xhdpi -> No Help image
drawable-xxhdpi -> help.png

以下是出现错误的一些设备(根据Crashlytics,我无法在我们手头的少量测试手机上复制它):Galaxy J7(2016)7.0,Optimus L40 4.42,m3 Note 5.1,Galaxy s4 4.4.2)

这是Google Play的新App Bundle格式中的错误吗,还是开发人员需要在每个可绘制文件夹中都拥有所有资产?


你解决了这个问题吗? - user25
2个回答

3
由于您在xhdpi文件夹中没有help.png,所以出现了错误,因为xhdpi720 X 1280px密度相关(例如:Galaxy J7)。
您可以将xxhdpi图片放在no-dpi文件夹中,或将该图片放在所有文件夹中。

将图像放在所有文件夹中是一个有趣的观点。这是否意味着还需要包括drawable-xxxhdpi?为什么我以前在.apk中不需要这样做,而现在在新的Google应用程序捆绑包中需要呢? - TomV
我认为现在谷歌更好地管理了APK文件。当您使用“图像资源”添加图像时,它会自动将其放入所有文件夹中。您应该使用这个功能,而不是手动操作。从左侧导航器右键单击Android包->新建->“图像资源”或者如果您有SVG文件,则选择“矢量资源”。 - Cătălin Florescu
如果我只在drawable文件夹中有这个PNG图像,它应该可以工作... - user25
1
在Crashlytics上发生了Nexus 5x 8.1 Android的崩溃。我创建了相同的模拟器,从应用商店下载了应用程序,但它可以正常工作! - user25

0
在你的 App 级别的 build.gradle 文件中,
可能会出现这个:
bundle {
    density {
        enableSplit true
    }
    abi {
        enableSplit true
    }
    language {
        enableSplit false
    }
}

您可以删除density标签,或者删除整个bundle标签,因为这在AAB的Beta版本中已经包含了,现在谷歌将负责拆分所有资源。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接