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

LGE Android8.1设备Drawable资源存在仍报Resources$NotFoundException错误

根因判定

你遇到的报错确实大概率由图片尺寸过大导致。
Android系统加载Drawable资源时会对图片执行解码操作,不同厂商、不同系统版本的单图片解码内存阈值存在差异,LGE Android 8.1这类老设备的阈值通常更低。你当前默认drawable目录下的red_logo.png尺寸为4864×2692,按系统默认ARGB_8888配置解码后占用内存约为52MB,远超出普通老设备的单图内存限制,解码失败后系统就会抛出资源未找到的异常,哪怕全密度目录下都存在对应资源文件。
另外默认drawable目录的密度匹配规则等价于mdpi,你在该目录下放和xxxhdpi同尺寸的资源也不合理:当设备为低/中密度时,系统会优先从默认drawable目录取资源再按密度缩放,会进一步放大图片尺寸,加重内存负担,也是触发崩溃的核心诱因之一。

解决方案

  • 压缩全密度目录下的logo资源:你布局中ImageView的高度仅为100dp,完全不需要4864×2692的超大尺寸,按各密度的标准像素要求裁剪即可:
    • ldpi:高度75px
    • mdpi:高度100px
    • hdpi:高度150px
    • xhdpi:高度200px
    • xxhdpi:高度300px
    • xxxhdpi:高度400px
  • 修正默认drawable目录资源:默认drawable目录下仅存放mdpi对应尺寸的资源即可,不要放置xxxhdpi尺寸的资源,避免低密设备缩放时内存溢出。
  • 可选优化:如果必须保留高清源文件,可改用Glide、Coil等图片加载框架加载drawable资源,这类框架会自动根据ImageView的尺寸采样压缩图片,避免全尺寸解码导致的内存溢出,参考代码:
ImageView logoIv = findViewById(R.id.logoImageView);
Glide.with(this).load(R.drawable.red_logo).into(logoIv);
  • 快速验证方案:可先将默认drawable目录下的red_logo.png替换为极小尺寸的测试图,重新打包运行看是否还会崩溃,快速确认问题根因。

内容的提问来源于stack exchange,提问作者Zhang Zhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:48:03