Jenkins构建失败::app:mergeDebugResources任务执行出错求助
解决Jenkins构建Android项目时的mergeDebugResources错误
我看到你在Jenkins上构建Android项目时遇到了资源编译失败的问题,具体是abc_action_bar_up_container.xml文件找不到导致mergeDebugResources任务失败。这大概率是Gradle缓存损坏或者依赖下载不完整引发的,下面给你几个实用的解决步骤:
1. 清理Gradle缓存并重新拉取依赖
这是最常见的解决方法,缓存文件损坏会直接导致依赖资源缺失:
- 先停止Jenkins服务,防止缓存文件被占用
- 删除Jenkins用户下的Gradle缓存目录:
C:\Windows\System32\config\systemprofile\.gradle\caches(注意你错误日志里的路径少了个点,正确路径应该是.gradle而非systemprofile.gradle) - 重启Jenkins,重新触发构建任务,让Gradle重新下载所有依赖包
2. 检查App模块的依赖与SDK配置
确保你的app模块build.gradle里正确引入了对应版本的appcompat依赖,同时SDK版本要和依赖版本匹配:
android { compileSdkVersion 28 targetSdkVersion 28 // 其他配置... } dependencies { implementation 'com.android.support:appcompat-v7:28.0.0' // 其他依赖... }
3. 临时禁用AAPT2(应急方案)
如果上面的方法都没效果,可以先临时禁用AAPT2来绕过这个问题,在项目根目录的gradle.properties中添加:
android.enableAapt2=false
不过要注意,这只是临时方案——AAPT2是官方推荐的资源编译工具,性能更优,后续还是建议修复缓存问题后重新启用它。
4. 检查Jenkins的目录权限
Jenkins运行的系统用户可能没有足够的权限访问C:\Windows\System32\config\systemprofile下的缓存目录,你可以:
- 给Jenkins运行用户分配该目录的读写权限
- 或者在Jenkins全局配置中修改
GRADLE_USER_HOME,指定到一个权限更开放的路径(比如C:\Jenkins\.gradle)
附:你的错误信息与配置详情
构建错误日志
FAILURE: Build failed with an exception. 出错原因:Execution failed for task ':app:mergeDebugResources'. java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: Android资源编译失败 输出:C:\Windows\System32\config\systemprofile.gradle\caches\transforms-1\files-1.1\appcompat-v7-28.0.0.aar\469a8bd93b2c9fb2a42463f1ac0d81a5\res\layout\abc_action_bar_up_container.xml: error: file not found. 命令:C:\Windows\System32\config\systemprofile.gradle\caches\transforms-1\files-1.1\aapt2-3.2.1-4818971-windows.jar\0b5860598e9c67615c35754aea535df6\aapt2-3.2.1-4818971-windows\aapt2.exe compile --legacy \ -o \ C:\Users\ArPa\Documents\app\build\intermediates\res\merged\debug \ C:\Windows\System32\config\systemprofile.gradle\caches\transforms-1\files-1.1\appcompat-v7-28.0.0.aar\469a8bd93b2c9fb2a42463f1ac0d81a5\res\layout\abc_action_bar_up_container.xml 守护进程:AAPT2 aapt2-3.2.1-4818971-windows Daemon #2
根目录build.gradle配置
buildscript { repositories { maven { url 'https://maven.google.com' } jcenter() google() maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'com.android.tools.build:gradle:3.2.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() maven { url 'https://maven.google.com' } } } task clean(type: Delete) { delete rootProject.buildDir }
gradle-wrapper.properties配置
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
内容的提问来源于stack exchange,提问作者queenEl
相关产品推荐
相关产品推荐

