资源未找到异常:资源ID为drawable(缺少名称)的Drawable。

12
    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)

我从 Firebase 中得到了这些错误日志,仅在 Nexus 5X Oreo 8.1 上发生。同时,ImageView 搜索的资源已经在以下这些 drawable 文件夹中可用:

  • drawable-hdpi
  • drawable-mdpi
  • drawable-xhdpi
  • drawable-xxhdpi
  • drawable-xxxhdpi

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

所以,我需要一个适当的修复方法和重新生成的方式... 只是为了检查是否已解决问题。

谢谢!


将相同的图像添加到 drawable-v24 而不是 drawable hdpi,xhdpi 中。有时会因资源而出现错误。 - M DEV
你能解决这个问题吗? - dicarlomagnus
1
暂无 @dicarlomagnus - Ishu Sharma
2个回答

8

这个问题已经被Crispert在这里详细阐述。

问题:

如果你正在使用应用束(.aab)文件,则此问题(可能)与Google针对特定用户手机剥离合适的可绘制资源有关。尽管他们试图覆盖所有屏幕密度,但某些设备仍然无法获得任何资源(例如xhdp、xxhdp、xxxhdpi等)。你提到的设备可能是其中之一。

解决方案:

尽管看起来很烦人,但像@Yuriy建议的那样将资源放入“drawable”目录中,以指示Google将此资源复制到所有的.apks文件中。


3
直接将可绘制文件复制到Drawable文件夹似乎不是一个好的解决方案。在我的项目中,我有数百个这样的文件,我应该全部复制吗?而且并非所有图像都会出现这种情况。 - George Shalvashvili

0
将图标放到“drawable”文件夹中,以避免在其他屏幕尺寸中缺失图标,还要检查图标是否复制到了其他文件夹中,可能会导致找不到它。

那么你的意思是,如果我也把图标放在drawable文件夹里,它就能解决上面提到的崩溃问题了,@Yuriy? - Ishu Sharma
可能会这样,所以尝试这样做,还要检查是否将所有图标复制到每个文件夹中。 - Yurii
我最近遇到了很多问题,即使我已经放置了一个SVG文件,问题仍然存在。 - sanjana
1
我已经把图片放在drawable中了,但仍然出现崩溃。 - Gaurav Singhal
@GauravSinghal 有什么解决方案吗? - Kamal Nayan

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