使用Jenkins构建Android项目时报mergeDebugResources执行失败如何解决
问题原因
- 核心触发因素为Windows系统权限限制:报错路径指向
C:\Windows\System32\config\systemprofile\,这是Windows内置System账户的用户目录,Jenkins默认以System账户运行时,工作目录会落在该路径下。AAPT资源编译工具没有该路径的完整读写权限,无法读取/写入合并后的资源文件,导致构建失败。而Android Studio使用当前登录的普通用户权限运行,工作目录位于普通用户可读写的路径下,因此可以正常构建。 - 次要触发因素为Windows默认路径长度限制:Jenkins默认工作目录嵌套层级多,叠加Android构建生成的中间资源路径层级,容易超出Windows默认的260字符路径长度上限,也会触发「系统找不到指定文件」的报错。
解决方案
- 方案1(优先推荐):修改Jenkins默认工作目录
- 进入Jenkins后台管理界面,依次打开
Manage Jenkins->Configure System - 找到高级设置区块,勾选自定义工作空间根目录选项,将路径修改为非系统盘、无权限限制的目录,例如
D:\Jenkins\workspace - 保存配置后重启Jenkins服务,重新执行构建即可。
- 进入Jenkins后台管理界面,依次打开
- 方案2:修改Jenkins服务运行账户
- 按下
Win+R输入services.msc打开服务管理器,找到Jenkins服务,右键选择「属性」 - 切换到「登录」选项卡,选择「此账户」,填写拥有管理员权限的本地用户账号和密码
- 保存配置后重启Jenkins服务,重新构建即可。
- 按下
- 方案3:开启Windows长路径支持
- 按下
Win+R输入regedit打开注册表编辑器 - 定位到路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem - 找到
LongPathsEnabled的DWORD值,将数值修改为1,保存后重启电脑生效。
- 按下
- 方案4:项目级临时适配
在项目根目录的gradle.properties文件中添加如下配置,修改构建中间文件的生成路径,规避System32路径的权限问题:android.buildDir = D:/android_build/${rootProject.name}/${project.name}
内容的提问来源于stack exchange,提问作者Bipin Tiwari
相关产品推荐
相关产品推荐

