禁用Aapt2后仍触发Aapt2Exception,Android旧项目编译问题求助
我之前也碰到过一模一样的糟心事——明明在gradle.properties里加了禁用配置,结果编译还是揪着AAPT2不放,甚至找不到具体错误日志,确实挺闹心的。给你几个实用的排查和解决步骤:
先确认配置的有效性
首先检查你的gradle.properties是不是放在项目根目录(不是某个模块的目录下),配置行有没有拼写错误:android.enableAapt2 = false里的空格其实不影响,但保险起见可以改成android.enableAapt2=false。改完后一定要执行「File -> Sync Project with Gradle Files」,确保Gradle加载了新配置。在模块级build.gradle里强制禁用AAPT2
有时候根目录的配置可能被模块级配置覆盖,你可以在对应模块的build.gradle里添加额外配置:android { // 其他配置... aaptOptions { useNewAapt2 false } }同步后再尝试编译。
清理缓存并重建项目
旧的编译缓存很可能让配置不生效,执行「Build -> Clean Project」,接着「Build -> Rebuild Project」,彻底清空旧缓存后重新编译。获取更详细的错误日志
Android Studio的默认日志可能隐藏了关键信息,你可以在Terminal里运行命令来输出完整日志:- Mac/Linux:
./gradlew assembleDebug --info - Windows:
gradlew assembleDebug --info
运行后搜索关键词Aapt2Exception或者error,通常能找到具体的故障点——比如某个XML文件的语法错误、图片格式不兼容、资源重名等,这些都是AAPT2严格检测但旧版AAPT忽略的问题。
- Mac/Linux:
检查Build Tools版本兼容性
如果你的Build Tools版本过高(比如30.0.0及以上),Android Gradle Plugin可能已经强制启用AAPT2,不再支持禁用。这种情况下你要么降级Build Tools到29.x.x及以下,要么针对日志里的资源问题进行修复——毕竟AAPT2的严格检测其实能帮你提前规避很多潜在的资源问题。
内容的提问来源于stack exchange,提问作者steventnorris

