Android应用启动崩溃:ImageButton加载失败(资源未找到)
解决Android启动崩溃:Resources$NotFoundException(资源ID #0x7f060062)
这种资源找不到的启动崩溃我碰到过不少次,核心原因是你布局文件第11行的ImageButton引用了一个不存在的资源(大概率是drawable图标),下面给你一步步排查的方案:
1. 先定位资源ID对应的具体资源
首先得搞清楚0x7f060062这个ID到底对应哪个资源文件:
- 打开项目的
app/build/intermediates/symbols/debug/R.txt(如果是release版本就找release目录下的R.txt),直接搜索0x7f060062,你会看到类似这样的记录:drawable/ic_flash_button 0x7f060062,这就知道是哪个资源出问题了。 - 要是找不到R.txt,也可以用Android Studio的「Find in Path」功能(快捷键Ctrl+Shift+F),直接搜
0x7f060062,看哪个文件里引用了这个ID,反向找到资源名称。
2. 检查目标资源文件是否存在且合法
根据第一步找到的资源名称,去res/drawable(或者drawable-xxxhdpi等密度子目录)下核对:
- 文件是不是真的存在?有没有不小心被删除?
- 资源文件名必须是小写字母+下划线,不能有大写、空格或者特殊字符(比如
Flash_Button.png不行,得改成flash_button.png),否则编译时不会生成正确的资源ID。 - 别只在某一个密度目录放了文件,其他目录缺失?不过这种情况一般只会导致图标模糊,不会直接找不到,但也可以确认下。
3. 核对布局文件中的引用是否正确
打开崩溃提示的那个XML文件(第11行),找到对应的ImageButton标签,检查:
android:src或者android:background属性的资源引用是不是和第一步找到的一致?比如是不是写成了@drawable/flash_button,有没有拼写错误?- 有没有搞错资源类型?比如资源是drawable,却写成了
@mipmap/flash_button,这肯定找不到。
4. 清理编译缓存,重建项目
有时候是Android Studio的编译缓存搞的鬼,R文件和实际资源不匹配:
- 点击顶部菜单栏的
Build->Clean Project,然后再点Build->Rebuild Project。 - 也可以手动删除
app/build目录,然后重新编译项目,彻底清空缓存。
5. 检查版本控制或误操作导致的资源丢失
如果你用了Git这类版本控制工具:
- 查看最近的提交记录,看是不是不小心删除了目标资源文件。
- 检查
.gitignore文件,有没有误把资源文件的路径加进去,导致文件没提交到仓库。
6. 多模块项目的特殊检查(如果你的项目是多模块)
如果你的App依赖了其他Library模块:
- 确认这个资源是在App模块还是Library模块里,要是在Library里,引用时要加上模块前缀,比如
@library_name:drawable/flash_button。 - 检查Library模块是否正确同步到了项目中,有没有编译错误导致资源没生成。
要是以上步骤都试过还是解决不了,你可以把XML第11行的代码,还有R.txt里对应的资源记录贴出来,这样更容易精准定位问题。
内容的提问来源于stack exchange,提问作者Kothoju Lingachary
相关产品推荐
相关产品推荐

