构建代码时触发AAPT2错误及资源缺失导致应用构建失败
这种突然出现的资源引用失败、触发AAPT2错误的情况我太熟悉了——之前项目运行好好的,突然构建炸锅,大概率是资源相关的小问题,咱们一步步排查解决:
先确认资源文件是否真的存在
直奔app/src/main/res/drawable(包括各种分辨率的drawable-xxx目录),检查ic_menu_home_selection、ic_menu_my_account_selection这些文件有没有被误删、文件名是不是大小写错了(Android资源文件名严格区分大小写!),或者是不是被不小心移到其他模块里去了。检查arrays.xml里的引用格式
打开app/src/main/res/values/arrays.xml,逐行核对这些drawable的引用:确保是@drawable/ic_menu_home_selection这种正确格式,有没有拼写错误、多打/漏打字符,或者别名引用的格式不对。清理构建缓存+重建项目
缓存抽风是Android Studio的老毛病了,试试这几步:- 点击顶部菜单栏的
Build > Clean Project - 接着点
Build > Rebuild Project - 如果还不行,手动删除项目根目录的
.gradle文件夹和模块下的build文件夹,再重新构建
- 点击顶部菜单栏的
排查依赖模块的资源问题
如果这些drawable是来自其他依赖模块,先确认那个模块有没有正确添加到项目依赖里,而且该模块本身能正常编译。另外还要检查有没有资源冲突——比如其他模块有同名资源,导致你的目标资源被覆盖了。检查AAPT2相关配置
打开gradle.properties文件,看看有没有手动设置过android.enableAapt2=false(新版本默认是开启AAPT2的),如果有,把这行删掉或者改成true,然后重新同步项目。
要是以上方法都没搞定,最后试试大招:点击File > Invalidate Caches...,勾选Clear file system cache and local history,然后重启Android Studio,很多奇怪的构建问题都能这么解决。
内容的提问来源于stack exchange,提问作者Yash Parikh

