drawable导入图片后遇Error:(3) error错误的含义及解决方法
解决 "Error:(3) error: not well-formed (invalid token)" 问题
嘿,这个问题我帮不少开发者排查过,本质就是drawable文件夹里的某个XML资源文件犯了语法错误——编译器解析到第3行时,发现了不符合XML规范的内容,比如非法字符、未闭合标签、拼写错误之类的。别慌,按下面的步骤一步步来就能搞定:
排查与解决步骤
- 先锁定出错的文件:仔细看错误提示的完整信息,它会明确告诉你是哪个XML文件的第3行出问题(比如
res/drawable/button_selector.xml),别只盯着行号忽略文件名。 - 检查第3行的细节:
- 有没有用XML禁止的特殊字符?比如直接写
&、<这类符号,必须转义(比如&要写成&); - 标签是不是没闭合?比如写了
<shape>却漏了</shape>,或者标签嵌套逻辑混乱; - 属性值有没有加引号?比如
android:color=#FF0000这种写法就错了,得改成android:color="#FF0000"; - 有没有拼写或标点错误?比如把
android:strokeWidth写成android:strokewidth,或者不小心用了中文引号;
- 有没有用XML禁止的特殊字符?比如直接写
- 检查文件名合规性:如果是刚新增的XML文件,文件名不能有空格、特殊字符(比如
!@#)或大写字母,Android要求资源文件名只能用小写字母、数字、下划线或点号,比如card_bg.xml才是正确格式; - 用IDE帮忙校验:Android Studio里右键出错的XML文件,选择
Validate,IDE会直接标出具体的语法问题; - 排除图片的特殊情况:如果所有XML都没问题,试试移除刚上传的图片,看错误是否消失——极少数情况下,损坏的图片或Android不支持的格式(比如特殊编码的WebP)也可能触发奇怪的错误,但这种情况很少见。
举个常见的错误例子:
错误写法(第3行颜色值没加引号):
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="8dp" /> <solid android:color=#FF4081 /> </shape>
修正后(给颜色值加上引号):
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="8dp" /> <solid android:color="#FF4081" /> </shape>
这样错误就会消失啦。
内容的提问来源于stack exchange,提问作者fallen mcmullan




