.xcodeproj目录中各文件作用及SVN/Git同步
2016-03-18 10:53
447 查看
在iOS多人协同开发时,一般会使用版本管理工具,比如SVN/Git。
经常的,在提交修改的时候,除了我们自己主动修改的.h、.m和资源文件之外,还会出现一些莫名其妙的文件,在.xcodeproj里面,如下图:
.xcodeproj是项目文件,包含项目配置文件,这是很多人都知道的。然而,.xcodeproj里面的各个文件都有什么用呢?提交版本时,要不要提交这些文件/目录?下面总结一下。
一个xcodeproj文件,其实是一个目录,它的格式大体上是这样的:
有的文件,比如user.mode1v3,在没有多个用户操作项目的时候,是没有的。Apple并没有提供.xcodeproj文件的文档,而且它也没有准备提供,更坑爹的是,xcodeproj的格式、内容都是随时可变的,比如一个Xcode版本上来,可能其目录就会变化,而没有任何通知。这可苦了那些为.xcodeproj开发每三方库的同学,不仅要一点一点摸索各个文件的内容,修改方法,还要忍受Apple没有任何通知地修改格式。Stackoverflow中这位就在抱怨苹果开发人员的傲慢:http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects/12021580#12021580
闲话少说,下面进入正题:各个文件/目录的作用,以及要不要提交更新。
总结1:
.xcodeproj里的文件大体上有3种:
项目文件,需要同步;
单个用户的文件,不需要同步;
跟workspace相关的文件,视有没有深入使用workspace而定。
总结2:
经常的,在提交修改的时候,除了我们自己主动修改的.h、.m和资源文件之外,还会出现一些莫名其妙的文件,在.xcodeproj里面,如下图:
.xcodeproj是项目文件,包含项目配置文件,这是很多人都知道的。然而,.xcodeproj里面的各个文件都有什么用呢?提交版本时,要不要提交这些文件/目录?下面总结一下。
一个xcodeproj文件,其实是一个目录,它的格式大体上是这样的:
有的文件,比如user.mode1v3,在没有多个用户操作项目的时候,是没有的。Apple并没有提供.xcodeproj文件的文档,而且它也没有准备提供,更坑爹的是,xcodeproj的格式、内容都是随时可变的,比如一个Xcode版本上来,可能其目录就会变化,而没有任何通知。这可苦了那些为.xcodeproj开发每三方库的同学,不仅要一点一点摸索各个文件的内容,修改方法,还要忍受Apple没有任何通知地修改格式。Stackoverflow中这位就在抱怨苹果开发人员的傲慢:http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects/12021580#12021580
闲话少说,下面进入正题:各个文件/目录的作用,以及要不要提交更新。
1.project.pbxproj文件 这个文件包含了所有此项目build需要的元数据,setting、file reference、configuration、targets…也就是说,这个文件代表的就是这个project。 因此,在修改了这个文件之后,需要提交上去。 2.project.xcworkspace目录 这个文件比较特殊。 首先要了解的是workspace和project的概念。project应该比较清楚,那workspace是什么呢?workspace是一种Xcode documentation,可以将多个project和其它文件放到一起,这样可以work on them together。一个project也可以属于多个workspace。所以简单来讲,workspace里面就是一个或多个projects的reference,放在一起,有时候比较好工作。 这样的话,如果项目里面根本就没有workspace的概念,或者只有一个workspace+一个project,这个workspace并不会有什么变动,那这个文件就不需要提交同步。如果project很依赖workspace,没有workspace就运行不了,活不下去了,这时候这个文件肯定是要同步的。 3.user.pbxuser文件 Xcode项目为每一个使用这个项目的用户创建一个user.pbxuser文件,存储了此用户对项目的偏好设置,如Xcode的位置和大小、文件书签等。可以看到这个文件是针对某个用户的,可以说是私人性质的,跟整个项目没有太大关系,所以一般不需要同步。 4.user.mode1v3和user.mode2v3文件 这个也是用户相关的文件,和user.pbxuser差不多,存储某用户特定的项目设置,比如Xcode中window的状态和结构,断点等等。 因此也不需要同步。 5.xcuserdata目录/xcshareddata目录: 大体上来说,和上面两种一样,也是用户相关的文件,包含user state,folders的状态,最后打开的文件等。因此一般来说是不需要同步的。 例外是,这个目录里也包含了scheme相关的内容。如果项目里需要同步特定的scheme,这时候,需要在Edit Scheme里,勾选Share框,然后把新生成的xcshareddata目录提交上去。 6..xccheckout 我没有碰到过这个文件。 这个文件在xcworkspace目录里。 .xccheckout文件包含了关于workspace中用到了什么repo的数据。 根据说明,它的规则和xcworkspace差不多:如果没用过,或者只是简单使用workspace,不需要同步;如果深入使用workspace,则需要同步。
总结1:
.xcodeproj里的文件大体上有3种:
.项目文件 .单个用户的文件 .跟workspace相关的文件
项目文件,需要同步;
单个用户的文件,不需要同步;
跟workspace相关的文件,视有没有深入使用workspace而定。
总结2:
1.需要同步的文件: project.pbxproj文件 xcsharedata目录 2.不需要同步的文件 user.pbxuser文件 user.mode1v3/user.mode2v3文件 xcuserdata目录 3.视workspace情况而定的文件: .xcworkspace目录 .xccheckout文件
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 【DevOps】为什么我们永远疲于奔命?
- 网络管理之IP地址篇
- 文件的读出 编辑 管理
- SQL Server 2008 R2 应用及多服务器管理
- VC下通过系统快照实现进程管理的方法
- 使用jQuery管理选择结果
- SQLServer 管理常用SQL语句
- 图书管理程序(二)
- javascript的内存管理详解
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法