由 android.view.InflateException 二进制 XML 文件行 #101 引起:由 android.content.res.Resources$NotFoundException 引起

Caused by android.view.InflateException Binary XML file line #101: Caused by android.content.res.Resources$NotFoundException

从 Crashlytics 收到此错误,影响了一些设备:

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

由 android.content.res.Resources$NotFoundException 引起 资源 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"
    />

这是我所有的可绘制文件夹 with/without 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 格式中的错误,还是开发人员需要拥有所有可绘制文件夹以及每个文件夹中的资产?

由于您在 xhdpi 文件夹中没有 help.png,这就是您出现该错误的原因,因为 xhdpi720 X 1280px 密度相关联(例如:Galaxy J7).

您可以只将 xxhdpi 图片放入 no-dpi 文件夹,或者将该图片放入所有文件夹。

在您的 build.gradle 应用级别

文件中

这可能存在

bundle {
    density {
        enableSplit true
    }
    abi {
        enableSplit true
    }
    language {
        enableSplit false
    }
}

您可以删除 density 标签,或删除整个捆绑包标签,因为它包含在 AAB 的 Beta 版本中,现在 google 将处理所有要拆分的资源。