使用gradle:3.1.0构建时出现AAPT2 error等异常,求精准解决方案
我之前在使用com.android.tools.build:gradle:3.1.0构建项目时也碰到过一模一样的java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception错误,折腾了好一阵才搞定,给你整理几个靠谱的解决办法:
优先检查资源文件语法错误:这是触发AAPT2错误最常见的原因。AAPT2对资源的校验比旧版严格很多,比如XML标签未闭合、属性值格式错误(比如颜色值少写了
#、drawable引用路径错误)、不小心混入中文标点等。重点排查最近修改过的res/layout、res/values、res/drawable目录下的文件,尤其是vector drawable的语法问题。临时禁用AAPT2(紧急情况用):如果赶时间上线,可以先临时关闭AAPT2。在项目根目录的
gradle.properties文件中添加一行:android.enableAapt2=false同步项目后再构建。不过注意,后续升级gradle版本时这个配置可能会被移除,所以这只是临时方案,建议后续还是修复根本问题。
清理缓存并重建项目:缓存的旧资源或构建产物可能导致冲突。先在终端执行清理命令:
# macOS/Linux ./gradlew clean # Windows gradlew clean然后点击Android Studio菜单栏的
Build -> Rebuild Project,重新构建项目。检查依赖兼容性:部分第三方库或旧版support库可能与gradle 3.1.0的AAPT2不兼容。比如可以尝试将
com.android.support:appcompat-v7升级到与gradle 3.1.0匹配的27.1.1版本,同时排查是否有第三方库自带了存在问题的资源文件。清除Android Studio缓存:有时候AS的本地缓存会导致奇怪的构建问题。通过
File -> Invalidate Caches / Restart...选择清除缓存并重启AS,之后再尝试构建。查看详细错误日志定位问题:你看到的错误只是顶层提示,要找到具体原因需要看详细日志。在终端执行构建命令并打印详细信息:
./gradlew assembleDebug --info在输出日志中搜索
AAPT2 error,后面会跟着具体的错误文件和行号,根据这个信息就能精准修复问题。
如果这些方法都没解决,你可以把详细日志里的具体错误内容贴出来,我再帮你进一步分析。
内容的提问来源于stack exchange,提问作者sumit coolbuddy

