替换colors.xml文件时遭遇Android资源编译失败错误
嘿,我看你替换colors.xml后触发了AAPT2的编译错误,但有意思的是,错误日志明确指向mipmap-anydpi-v26/ic_launcher_round.xml第一行有语法问题——这种情况大概率是你在修改颜色文件时不小心误碰了这个启动图标配置文件,或者颜色文件的改动间接导致了这个XML的解析异常。下面是一步步排查和解决的方法:
先检查ic_launcher_round.xml的核心语法
打开app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml,重点盯着第一行和整个文件的结构。正常的自适应图标XML应该是这样的:<?xml version="1.0" encoding="utf-8"?> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <background android:drawable="@color/ic_launcher_background"/> <foreground android:drawable="@mipmap/ic_launcher_foreground"/> </adaptive-icon>排查这些常见问题:
- 是不是漏写了XML声明
<?xml version="1.0" encoding="utf-8"?>? - 标签拼写错了吗?比如把
adaptive-icon写成了adaptiveicon? - 命名空间
xmlns:android有没有写错或者缺失? - 第一行是不是多了奇怪的字符、空格甚至乱码?
- 是不是漏写了XML声明
确认colors.xml的修改是否影响图标资源引用
如果你的启动图标XML里引用了@color/ic_launcher_background这类颜色资源,去检查下你替换后的colors.xml里还存不存在这个颜色定义。要是不小心删掉了对应的颜色值,也可能导致AAPT2抛出类似语法错误的异常(别问我怎么知道的,踩过坑)。确保colors.xml里有类似这样的代码:<color name="ic_launcher_background">#FFFFFF</color>颜色值根据你的实际需求调整就行。
清理缓存+重建项目,解决玄学问题
有时候Android Studio的缓存会搞出各种奇怪的编译错误,试试这几步:- 点击顶部菜单栏的
Build->Clean Project - 接着点击
Build->Rebuild Project - 要是还不行,手动删掉项目根目录下的
.gradle文件夹和app/build文件夹,然后重新同步项目(File->Sync Project with Gradle Files)
- 点击顶部菜单栏的
临时禁用AAPT2(不推荐,但可以应急)
你的日志显示用的是AAPT2 3.2.1版本,如果上面的方法都没用,可以试试在项目根目录的gradle.properties里加一行:android.enableAapt2=false用旧版的AAPT编译试试,但这只是临时方案,建议还是把XML的语法问题修好,毕竟AAPT2是官方主推的编译工具,功能更全。
内容的提问来源于stack exchange,提问作者Naveen pokhriyal

