Resources$NotFoundException:带有资源 ID 的可绘制对象(缺少名称)

Ish*_*rma 14 android android-layout android-studio

    Caused by android.content.res.Resources$NotFoundException: Unable to find resource ID #0x7f08012e
   at android.content.res.ResourcesImpl.getResourceName(ResourcesImpl.java:253)
   at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:760)
   at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:630)
   at android.content.res.Resources.loadDrawable(Resources.java:886)
   at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:953)
   at android.content.res.TypedArray.getDrawable(TypedArray.java:928)
Run Code Online (Sandbox Code Playgroud)

我从 firebase 得到了这个错误日志。它仅发生在 Nexus 5X Oreo 8.1 上此外,xml ImageView 正在搜索的资源已在这些可绘制文件夹中可用:

  • 可绘制的 hdpi
  • 可绘制 mdpi
  • 可绘制xhdpi
  • 可绘制-xxhdpi
  • 可绘制-xxxhdpi

它只是一个小的 png 图标,所以大小不是问题。该项目的最小支持的 sdk 是 API 级别 21,我已经尝试在模拟器中运行它,但没有发生崩溃。

所以,如果可能的话,我需要一个适当的修复和重新生成的方法......只是为了检查它是否已修复。

谢谢你!

Oz *_*bat 9

Crispert在这里详细阐述了这个问题。

问题:

如果您使用的是 App Bundle (.aab) 文件,则此问题(可能)与 Google 将合适的绘图剥离到特定用户手机相关。虽然他们试图覆盖所有屏幕密度,但有些设备落在椅子之间,因此无法获得任何资源(不是 xhdp、xxhdp、xxxhdpi 等)。您提到的设备可能就是其中之一。

解决方案:

看起来很烦人,将资源放在“drawable”目录中,正如 @Yuriy 建议的那样,以指示 Google 该资源应该复制到所有 .apks

  • 直接将可绘制对象复制到可绘制文件夹似乎不是一个好的解决方案。在我的项目中,我有数百个此类文件,我应该复制所有这些文件吗?此外,并非所有图像都会发生这种情况 (3认同)

Yur*_*rii 0

将图标放入“drawable”文件夹以避免丢失其他屏幕尺寸的图标,还要检查该图标是否重复到其他文件夹,也许您丢失了它。

  • 我已将图像放入可绘制对象中,但仍然发生崩溃 (2认同)