Xcode 工程文件“.xcodeproj”文件夹解析
项目.xcodeproj 文件夹底下一般有4个文件:
project.pbxproj 文件
xcuserdata 文件夹
xcshareddata 文件夹
project.xcworkspace 文件夹 (这里暂不讲解)
下面主要讲解涉及到 .xcschemes 相关文件,其他设置(例如断点一类的)暂不讲解
1.project.pbxproj 文件。
Xcode项目文件是一个老式的plist(下一个风格)根据括号分隔的层次结构。
refer:http://www.monobjc.net/xcode-project-file-format.html
解析此文件可以使用命令行工具“plutil”,例如
plutil -convert json -s -r -o converted.json /Users/shaowei/Project/iphone-com-pub/baseframe/IphoneCom/IphoneCom.xcodeproj/project.pbxproj
plutil -convert xml1 -s -r -o converted.xml /Users/shaowei/Project/iphone-com-pub/baseframe/IphoneCom/IphoneCom.xcodeproj/project.pbxproj
上面的命令是把指定project.pbxproj文件 转换到命令的当前目录下converted.son,详情请”man plural”来查询使用方法
注意:尽量带上“-o 结果文件”,否则的话此命令会修改project.pbxproj文件本身,想相信这不是你想要的。
还有converted.xml 的扩展名改为“converted.plist”,这样就能使用Xcode的来查看该文件,界面更友好,你懂得。
refer from: http://stackoverflow.com/questions/1452707/library-to-read-write-pbxproj-xcodeproj-files
其他解析方式如下(暂未验证有消息,只是网上找的):
http://stackoverflow.com/questions/7557273/tutorial-or-guide-for-scripting-xcode-build-phases
https://pypi.python.org/pypi/xUnique
2.xcuserdata 文件夹
此文件夹是项目创建时跟随创建的,
里面路径:mac用户名.xcuserdatad -> xcschemes -> (***.xcscheme + xcschememanagement.plist)
点击 Xcode的“manage schemes”,出现下图,
如果选中 “shared”,则会把该目录下的“mac用户名.xcuserdatad -> xcschemes -> ***.xcscheme”文件移动到“xcshareddata->xcschemes”文件夹下;
删除此文件夹的话,“ xcschememanagement.plist”会在启动该项目时重建的,但是“***.xcscheme”文件是不会重建的,你就会丢失xcscheme文件。
此目录下会有多个文件夹,这根据不同的用户来命名的,当使用版本管理器时,而且没有忽略该文件夹,你就会发现此目录下就可能会有多个人的目录。
一般来说,此目录不太建议放到svn里面,因为这个目录放的是一些个人设置,还有断点设置一类的,即使你放到svn里面,别人也不会加载,因为Xcode只会加载对应用户名的文件夹。
需要和别人共享的xcschemes,应该放到下面的“xcshareddata”文件夹,然后使用svn来同步“xcshareddata”文件夹

3.xcshareddata 文件夹
项目一开始时,是没有“xcshareddata”文件夹的。
当上图的 “shared”复选框被选中,则会把 “xcuserdata”里相应的xcscheme文件移动到本目录的xcschemes文件夹下,这时才会创建此文件夹。
多人开发时,为了支持共享xcscheme,一般会勾选“shared”,这样,相应的“***.xcscheme”就会被移动到该目录下。
所以在多人开发时,应该把此目录放到svn里去同步,同时注意,被共享的“***.xcscheme”也会影响到队友,要慎重修改。
注意:删除此目录后,重新打开项目也不会重建的,删之要慎重~
如果删除此目录,而“xcuserdata”文件夹下也没有xcscheme文件,那么你打开项目,就会出现如下图情况,就是无法编译了;
如果出现了下面的情况,那么你把”xcuserdata”文件夹给删除掉,重启项目,Xcode会重新创建xcuserdata文件夹和默认的xcscheme文件。

Xcode 工程文件“.xcodeproj”文件夹解析的更多相关文章
- Xcode工程添加第三方文件的详细分析 Create folder references for any added folders
在开发iOS项目的时候需要导入第三方的库文件,但是通过Xcode导入第三方源文件的时候会提示一些信息,不知所以然. 现在看到的文档都是针对Xcode3的,针对Xcode4的说明很少,现在分享出来. 官 ...
- Xcode工程添加第三方文件的详细分析 Create folder references for any added folders(转)
在开发iOS项目的时候需要导入第三方的库文件,但是通过Xcode导入第三方源文件的时候会提示一些信息,不知所以然. 现在看到的文档都是针对Xcode3的,针对Xcode4的说明很少,现在分享出来. 官 ...
- 细聊 Cocoapods 与 Xcode 工程配置
前言 文章比较长,所以在文章的开头我打算简单介绍一下这篇文章将要讲述的内容,读者可以选择通篇细度,也可以直接找到自己感兴趣的部分. 既然是谈 Cocoapods,那首先要搞明白它出现的背景.有经验的开 ...
- 论XCODE工程里使用的宏定义.
在XCODE开发过程中,经常会遇到引用头文件,引用库路径的问题,如果不是直接的源码引入,则需要在工程中增加设置.虽然现在有了Pod这类集合管理工具,但有时为了一个很小的lib引入Pod这尊大神还是有点 ...
- iOS Xcode工程目录的 folder 和 group的区别(蓝色和黄色文件夹的区别)
1. 来自 http://blog.csdn.net/fanjunxi1990/article/details/9352917 XCode工程目录里面,有时你会发现2个不同颜色的文件夹,一种是蓝色的, ...
- Xcode工程文件pbxproj
Xcode工程文件pbxproj Xcode会去读Project.pbxproj文件,把pbxproj转成plist文件,看起根目录结构 rootObject:指向的是我们的工程对象.(对应一个24个 ...
- SVN版本更新后,upData工程之后,Xcode 工程文件打不开解决办法
svn更新代码后,打开xcode工程文件,会出现 xxx..xcodeproj cannot be opened becausethe project file cannot be parsed. ...
- Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.
svn更新代码后,打开xcode工程文件,会出现 xxx..xcodeproj cannot be opened because the project file cannot be parsed ...
- Xcode工程文件打不开:cannot be opened because the project file cannot be parsed
svn更新代码后,打开xcode工程文件,会出现 xxx..xcodeproj cannot be opened because the project file cannot be parsed ...
随机推荐
- jQuery的选择器的总结
一.简单选择器 // $(function () { // $("#box").css("color","red") // }) // 这个 ...
- Bind搭建DNS服务
DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析: 正向解析:根据主机名(域名)查找对应的IP地址. 反向解析:根据I ...
- 阿里云EIP按流量计费
https://help.aliyun.com/document_detail/27767.html 计费周期为1小时,账单周期也为1小时.在一个计费周期内,如果您使用的时间不足一小时,按一小时收费. ...
- MacOS下打包Python应用
在MacOS下开发的Python应用,不是Web Application,开发好以后,如何给用户使用呢?用户的操作系统也是MacOS 使用py2app打包 一.软件环境 ...
- 在Qt(C++)中使用QThread实现多线程
1. 引言 多线程对于需要处理耗时任务的应用很有用,一方面响应用户操作.更新界面显示,另一方面在"后台"进行耗时操作,比如大量运算.复制大文件.网络传输等. 使用Qt框架开发应用程 ...
- Java 设计模式系列(十四)命令模式(Command)
Java 设计模式系列(十四)命令模式(Command) 命令模式把一个请求或者操作封装到一个对象中.命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复 ...
- JMS规范简介
一.JMS规范 Java消息服务定义: Java消息服务(Java Message Service)即JMS,是一个Java平台中面向消息中间件的API,用于在两个应用程序之间或分布式系统中发送/接受 ...
- Oracle学习笔记(十三)
十四.触发器(监听数据操作的工具) 1.什么是触发器? 数据库触发器是一个与表相关联的.存储的PL/SQL程序 作用: 每当一个特定的数据操作语句(insert.update.delete)在指定的表 ...
- UIPickerView 修改必须滚动才修改值的bug
//相应的选择转动 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSI ...
- OpenGl中的Nurbs B样条曲面的封装的GLU的NURBS的接口
OpenGl中的Nurbs B样条曲面的封装的GLU的NURBS的接口 创建一个NURBS对象: GLUnurbs* gluNewNurbsRenderer (void); //创建一个NURBS对象 ...