项目.xcodeproj 文件夹底下一般有4个文件:

  1. project.pbxproj 文件

  2. xcuserdata 文件夹

  3. xcshareddata 文件夹

  4. 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”文件夹解析的更多相关文章

  1. Xcode工程添加第三方文件的详细分析 Create folder references for any added folders

    在开发iOS项目的时候需要导入第三方的库文件,但是通过Xcode导入第三方源文件的时候会提示一些信息,不知所以然. 现在看到的文档都是针对Xcode3的,针对Xcode4的说明很少,现在分享出来. 官 ...

  2. Xcode工程添加第三方文件的详细分析 Create folder references for any added folders(转)

    在开发iOS项目的时候需要导入第三方的库文件,但是通过Xcode导入第三方源文件的时候会提示一些信息,不知所以然. 现在看到的文档都是针对Xcode3的,针对Xcode4的说明很少,现在分享出来. 官 ...

  3. 细聊 Cocoapods 与 Xcode 工程配置

    前言 文章比较长,所以在文章的开头我打算简单介绍一下这篇文章将要讲述的内容,读者可以选择通篇细度,也可以直接找到自己感兴趣的部分. 既然是谈 Cocoapods,那首先要搞明白它出现的背景.有经验的开 ...

  4. 论XCODE工程里使用的宏定义.

    在XCODE开发过程中,经常会遇到引用头文件,引用库路径的问题,如果不是直接的源码引入,则需要在工程中增加设置.虽然现在有了Pod这类集合管理工具,但有时为了一个很小的lib引入Pod这尊大神还是有点 ...

  5. iOS Xcode工程目录的 folder 和 group的区别(蓝色和黄色文件夹的区别)

    1. 来自 http://blog.csdn.net/fanjunxi1990/article/details/9352917 XCode工程目录里面,有时你会发现2个不同颜色的文件夹,一种是蓝色的, ...

  6. Xcode工程文件pbxproj

    Xcode工程文件pbxproj Xcode会去读Project.pbxproj文件,把pbxproj转成plist文件,看起根目录结构 rootObject:指向的是我们的工程对象.(对应一个24个 ...

  7. SVN版本更新后,upData工程之后,Xcode 工程文件打不开解决办法

    svn更新代码后,打开xcode工程文件,会出现  xxx..xcodeproj  cannot be opened becausethe project file cannot be parsed. ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. udp调优经验

    降低丢包率: 1. 增大输入输出缓冲区 2. 调用发送接口时增大单次发送的buffer大小 8k 3. 多个socket 多线程接收 4 发送端流量控制,并且保证发送速率均匀 降低时延: 减小包大小? ...

  2. [Selenium]对于某些对话框即有可能弹出来,也有可能不弹出来,这种应该怎么处理呢?

    界面上如果有一个对话框可能弹出来,也可能不弹出,我们都要认为是正常,应该怎么处理呢? /** * check if release notes dialog present * @author j * ...

  3. gradle使用总结

    ###打包时跳过单元测试

  4. Quartz2D Text

    [Quartz2D Text] Quartz 2D provides a limited, low-level interface for drawing text encoded in the Ma ...

  5. 前端福利之HTML5 UTF-8 中文乱码(转)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. 前端福利之个性化设置table的td宽度(总结)

    很多时候,我们在用到table时,都希望随意设置 每个单元格的宽度,而不希望单元格被内容撑开table的样式. 1.首先,设置table的宽度 width=“1000” 或者 width=“100%” ...

  7. python使用git进行版本控制1

    首先,选择一个合适的地方,创建一个空目录: $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit pwd命令用于显示当前目录. 如果 ...

  8. C++11新标准学习

    <深入理解C++11:C++11新特性解析与应用> <华章科技:深入理解C++11:C++11新特性解析与应用>一共8章:第1章从设计思维和应用范畴两个维度对C++11新标准中 ...

  9. Android-自定义控件之事件分发

    最大范围 外层蓝色区域是继承ViewGroup 中间红色区域,也是继承ViewGroup 最中间黑色区域,是继承View 布局相关的代码: <!-- 事件分发 --> <view.c ...

  10. 利用ROW_NUMBER中的partition by 删除重复Key的数据

    With temp As ( Select ROW_NUMBER() over(partition by LogisticsPlan order by createon) rowID,ID from ...