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

Android Studio中BitmapFactory.decodeResource返回null致应用崩溃求助

解决BitmapFactory.decodeResource返回null的问题

排查方向1:图片格式与资源目录问题

  • 确认图片为标准PNG格式:用系统预览工具打开bg.png,检查是否损坏或采用了Android不兼容的特殊压缩格式。可重新导出PNG,选择无压缩或标准压缩模式。
  • 调整资源目录:若图片是指定mdpi密度的,应放入res/drawable-mdpi文件夹,而非根目录的drawable。移动后重新编译项目。

排查方向2:内存加载限制优化

1024×512 px的图片虽不算大,但可通过BitmapFactory.Options调整加载参数,避免因内存或硬件兼容性问题导致加载失败:

public BitmapBank(Resources res ) {
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inPreferredConfig = Bitmap.Config.RGB_565; // 无透明需求时用此格式减少内存占用
    options.inSampleSize = 1; // 可根据需求设为2,将图片尺寸缩小一半加载
    options.inDither = true;
    
    background = BitmapFactory.decodeResource(res, R.drawable.bg, options);
    // 增加非空判断,避免直接调用getWidth/Height崩溃
    if (background == null) {
        throw new IllegalArgumentException("无法加载bg.png资源");
    }
}

排查方向3:Android Studio缓存与编译问题

  • 清理项目缓存:点击菜单栏File > Invalidate Caches...,选择Invalidate and Restart,重启后重新编译。
  • 检查build.gradle配置:确认android > defaultConfig中vectorDrawables.useSupportLibrary的开启未干扰位图加载,同时保证compileSdk、targetSdk版本与图片格式兼容。

排查方向4:资源ID混淆问题

若开启了R8/ProGuard资源混淆,需在proguard-rules.pro中添加规则避免bg.png的资源ID被混淆:

-keep class 你的项目包名.R$drawable {
    public static <fields>;
}

替换上述代码中的你的项目包名为实际包名。


内容的提问来源于stack exchange,提问作者Dean-O

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:37:12