关于xcshareddata的一点问题总结

在制作sdk项目并打包.a静态库时,遇到在Jenkins服务器上编译失败的问题。原因是.xcshareddata/xcschemes目录下的scheme未共享,导致编译卡住。解决方案是检查并共享scheme,确保多人开发时xcshareddata文件夹同步到git,以防止编译错误。删除xcshareddata需谨慎,因为它不会自动重建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的问题

最近在做一个新的sdk项目, 需要最终打包.a静态库文件。写好了shell打包脚本之后,本地跑脚本打包一切ok,但是在jinkens服务器上创建项目自动打包,走到脚本里面执行下列命令的时候就卡住,一直不能往下走,导致最后编译失败。。。

xcodebuild  -workspace $projectName.xcworkspace -scheme $projectLibName -configuration Release -sdk iphoneos -arch armv7 clean build  TARGET_BUILD_DIR=$LibDir BUILT_PRODUCTS_DIR=$LibDir

一直也不报错,就是卡在那里不动,然后让我其他同事拉代码,本地执行脚本,也不能打包成功,如果他们先build一下静态库,再重新打包就ok。这就说明是Xcode的一些配置信息在我的电脑这里有,而他们那是没有的,进而确定了原因是出在一些环境配置上的,接着google一下xcodebuild -workspace相关的问题,发现这篇文章xcodebuild says does not contain scheme,研究了一下,就找到问题的所在,大喜!!!

这里写图片描述

大概是说在编译workspace的时候会到工程的xcshareddata/xcschemes目录下面去找,找到对应的scheme才可以正常编译,检查一下我自己的项目

  • 没有share需要编译的静态库scheme
  • 在.gitignore文件忽略了*.xcshareddata/文件夹

就是这个原因,所以jinkens服务器和其他人的电脑,找不到这个scheme,所以就编译失败啦!

这里大致说一下xcshareddata文件夹:

项目一开始时,是没有“xcshareddata”文件夹的。当manage scheme 下的 “shared”复选框被选中,则会把 “xcuserdata”里相应的xcscheme文件移动到本目录的xcschemes文件夹下,这时才会创建此文件夹。

多人开发时,为了支持共享xcscheme,一般会勾选“shared”,这样,相应的“*.xcscheme”就会被移动到该目录下。

所以在多人开发时,应该把此目录放到git里去同步,同时注意,被共享的“*.xcscheme”也会影响到队友,要慎重修改。注意:删除此目录后,重新打开项目也不会重建的,删之要慎重~

如果删除此目录,而“xcuserdata”文件夹下也没有xcscheme文件,那么你打开项目,就是无法编译了;
如果出现了这样的情况,那么你把”xcuserdata”文件夹给删除掉,重启项目,Xcode会重新创建xcuserdata文件夹和默认的xcscheme文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值