[这个BUG绝对坑爹]layout/xxxx/xml "error: resource drawable/xxx not found"(AndroidStudio编译时)

本文介绍了一个关于Android布局中图片资源找不到的问题及其解决过程。作者发现由于无意中复制了多余的XML声明头导致编译器出错,进而引发了一系列错误提示。此问题提醒开发者在开发过程中需要格外注意细节。

莫名其妙的layout/xxxx/xml “error: resource drawable/xxx not found”

如图:
这里写图片描述

项目突然之间报错layout中图片资源找不到,但是进入layout中查看布局,发现该布局引用的所有图片均可向上追溯,不可能找不到啊!

最终解决

这种错误看起来很懵,明明这些布局文件、资源引用都是OK的。好,回想一下自己都做贱了些什么,然后一项项检查,发现是一个很低级的错误,如图:
这里写图片描述

看红框中,根本原因是copy代码无意中多copy了一段xml的声明头…

这个问题坑在AndroidStudio根本没有好好报错啊…报出来一堆不太相关的,据我判断可能是因为多出的xml声明导致编译器出错,最终导致了AndroidStudio所报出的一堆错误。。。也就是说 Studio有时候报出的错误是一个“结果”,而不是“原因”。

恩,一定要细心战友们!

解决历程

1、通过对比项目上一版本代码,首先就判断问题肯定出在res中
2、一项一项的排查,将最新有bug代码的res中每项文件夹依次copy进入上一版本项目中,build

<think> 根据用户的问题,用户遇到了Android资源链接失败,提示drawable资源未找到的问题。用户提供的引用中提到了几种可能导致资源文件错误的情况,包括图片格式转换问题、.9.png图片格式错误以及发布过程中的配置问题。 结合引用[1]和引用[2]的信息,我们可以总结出以下可能的原因和解决方案: 1. **资源文件格式问题**:将图片格式从jpg改为png时可能导致错误(引用[1])。 2. **.9.png图片格式错误**:.9.png图片不符合规范会导致编译失败(引用[2])。 3. **资源文件未正确放置**:资源文件未放在正确的drawable目录下。 4. **资源名称或路径错误**:在XML中引用的资源名称与文件名不一致,或使用了不支持的字符。 具体解决步骤: 1. **检查资源文件格式**:确保图片是有效的PNG格式(非.9.png图片)。对于.9.png图片,需使用draw9patch工具检查边缘像素是否符合规范(引用[2])。 2. **检查资源放置位置**:确认资源文件(如item_bg.png)是否放置在正确的drawable目录(如drawable-hdpi)。 3. **检查XML引用**:确保XML中引用的资源名称与文件名一致(不含扩展名)。 4. **清理和重建项目**:使用Android Studio的Clean Project和Rebuild Project功能。 5. **检查资源名称合法性**:文件名只能包含小写字母、数字和下划线(如`contact_photo.png`有效,`contact-photo.png`无效)。 如果以上步骤不能解决问题,可能需要检查Gradle配置文件或检查是否有重复的资源命名冲突。 相关引用: - 引用[1]提到图片格式转换可能导致问题。 - 引用[2]说明.9.png格式错误会导致资源编译失败。 </think> 以下是根据引用信息和Android开发经验整理的解决方案,针对资源链接失败(drawable资源未找到)问题: ### 解决步骤 1. **检查资源命名规范**: - 确保文件名仅含小写字母、数字和下划线(如`item_bg.xml`有效,`item-bg.xml`无效) - 检查XML中引用是否匹配文件名(不含扩展名):`@drawable/item_bg` 2. **验证资源文件位置**: - 正确目录:`res/drawable/`(或`drawable-hdpi`等密度限定目录) - 避免错误:`.9.png`文件必须放在`drawable`目录而非`mipmap`(引用[2]) 3. **处理.9.png图片问题**: ```bash # 使用Android SDK工具检查.9.png格式 $ANDROID_HOME/tools/draw9patch your_image.9.png ``` - 需符合:边缘像素必须纯黑(定义拉伸区域)或透明(引用[2]提到的像素错误) 4. **清理和重建项目**: - Android Studio操作: - `Build > Clean Project` - `Build > Rebuild Project` - 命令行清理:`./gradlew clean assembleDebug`(引用[1]) 5. **检查资源类型匹配**: - 图片资源需为`.png/.jpg`,XML形状定义需为`.xml` - 错误示例:将JPEG图片直接重命名为`.png`(引用[1]的格式转换问题) 6. **验证资源完整性**: - 用图片工具打开疑似文件,检查是否能正常渲染 - 删除并重新导入问题资源文件 7. **检查模块依赖**: ```gradle // build.gradle 确保包含资源依赖 android { sourceSets { main.res.srcDirs += 'src/main/res' } } ``` ### 常见错误场景 1. **XML引用错误**: ```xml <!-- 错误:资源名含大写或特殊字符 --> <View android:background="@drawable/Item_Bg"/> <!-- 正确 --> <View android:background="@drawable/item_bg"/> ``` 2. **.9.png未定义拉伸区域**: ![.9.png示例](https://developer.android.com/images/tools/draw9patch_thumb.png) (红框区域必须正确定义) 3. **资源未同步**: - 执行`File > Sync Project with Gradle Files` - 检查`Build`窗口中的`mergeDebugResources`错误详情 > **重要提示**:若引用`v7`包资源,需在`build.gradle`添加依赖: > `implementation 'com.android.support:appcompat-v7:28.0.0'`(引用[1])
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值