Hudson构建任务因AAPT2报错失败:appcompat-v7文件缺失
Hudson Android构建任务AAPT2执行失败问题排查
问题描述
我的Hudson构建任务执行失败,报错核心信息如下:
Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
日志中重复出现类似文件找不到的记录:
C:\Windows\System32\config\systemprofile\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.1.0.aar\3bbc697d357b69b5ea5f78a35f99a514\res\color\abc_hint_foreground_material_dark.xml: error: file not found.
我已经查阅过相关AAPT2报错的社区讨论,但未找到适配的解决方案,想请教该构建失败的具体原因和解决方向。
原因分析与解决建议
从你给出的报错细节来看,核心问题出在Gradle缓存中的aar包损坏或不完整,导致AAPT2在处理资源时找不到指定文件。下面是具体的分析和可落地的解决步骤:
1. Gradle本地缓存损坏
Hudson构建时使用的是系统账户(systemprofile)的Gradle缓存,这个路径下的appcompat-v7-26.1.0.aar解压后的资源文件缺失,大概率是缓存下载中断、磁盘写入错误或者缓存文件损坏导致的。
- 解决步骤:
- 手动删除该损坏的缓存目录:
C:\Windows\System32\config\systemprofile\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.1.0.aar\3bbc697d357b69b5ea5f78a35f99a514 - 或者直接清空整个transforms缓存文件夹:
C:\Windows\System32\config\systemprofile\.gradle\caches\transforms-1 - 重新触发Hudson构建,让Gradle重新下载并解压完整的aar包
- 手动删除该损坏的缓存目录:
2. Hudson构建账户权限不足
系统账户systemprofile对Gradle缓存目录的读写权限可能存在限制,导致aar包无法完整写入磁盘,最终出现文件缺失的情况。
- 解决步骤:
- 右键点击
C:\Windows\System32\config\systemprofile\.gradle目录,选择「属性」-「安全」选项卡 - 确保Hudson服务运行的账户(通常是Local System或你指定的服务账户)拥有该目录的完全控制权限
- 应用权限设置后重新执行构建任务
- 右键点击
3. 依赖仓库源不稳定
如果你的构建脚本配置的依赖仓库(比如jcenter、mavenCentral)网络不稳定,可能导致下载的aar包本身就不完整。
- 解决步骤:
- 在项目根目录的
build.gradle文件中,切换到更稳定的镜像源 - 或者手动下载完整的
appcompat-v7-26.1.0.aar文件,放置到本地maven仓库中,修改构建脚本优先从本地仓库获取依赖
- 在项目根目录的
4. AAPT2与AGP版本不兼容
虽然你提到已经查阅过相关问题,但还是要确认下项目使用的Android Gradle Plugin(AGP)版本和AAPT2是否匹配。appcompat-v7-26.1.0对应的AGP版本建议在3.0.x到3.2.x之间,版本不匹配也可能引发资源处理异常。
- 解决步骤:
- 打开项目根目录的
build.gradle,检查com.android.tools.build:gradle的版本号,调整到适配的范围 - 同步项目配置后重新触发Hudson构建
- 打开项目根目录的
内容的提问来源于stack exchange,提问作者rorold
相关产品推荐
相关产品推荐

