工程文件
2019-11-06 本文已影响0人
若水water
.xcodeproj 文件是项目的工程文件,而将此文件右键显示包内容,可以看到一个project.pbxproj文件,这个文件存储着xcode的各项配置参数,它本质上是一种旧风格的Property List 文件,下面我们来认识一下这个文件:
- project.pbxproj文件的结构是这样的:
// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 50; objects = { } } rootObject = 94ED86CD233B6C2000A8E264 /* Project object */;
而objects 中就是工程的所有配置信息和 项目文件,下面对objects中的每一项做个简单的介绍:
//bojects 中的每项 都是一个section,由begin 和 end 区分
/* 构建所需的代码文件,库文件,资源文件*/
/* Begin PBXBuildFile section */
/* End PBXBuildFile section */
/*这里记录了每个target的targetProxy,与PBXTargetDependency相对应 */
/* Begin PBXContainerItemProxy section */
/* End PBXContainerItemProxy section */
/*记录了每个代码文件的文件类型、路径path、sourceTree,不论引入文件的时候是create group还是create reference,都会在这里添加一条记录 */
/* Begin PBXFileReference section */
/* End PBXFileReference section */
/* 工程中所依赖的Frameworks的信息,对应Build Phases中的`Link Binary With Libraries`*/
/* Begin PBXFrameworksBuildPhase section */
/* End PBXFrameworksBuildPhase section */
/* 工程中所有文件的group信息,这个和xcode文件目录是对应的,每一层的文件目录有唯一的UUID,同一层group下的子group会和上一层的group的UUID有很高的重合度(基本只有1-2位不同),这个PBXGroup section中,子group没有用树的方式,而是采用类似列表的方式呈现了所有的group目录,可以脑补:打开xcode左侧目录,然后让所有目录和文件"左对齐",然后就会生成如下的结构` */
/* Begin PBXGroup section */
/* End PBXGroup section */
/* 每个Target的BuildSettings和BuildPhases(Sources/Frameworks/Resources等)的信息*/
/* Begin PBXNativeTarget section */
/* End PBXNativeTarget section */
/* 整个项目工程Project的信息,包括项目路径、Config信息,相关版本号,所有的Target等信息 */
/* Begin PBXProject section */
/* End PBXProject section */
/*列举了项目中每个Resources的信息, 包括Build Phase下`Copy Bundle Resources`文件、Assets.xcassets等资源文件*/
/* Begin PBXResourcesBuildPhase section */
/* End PBXResourcesBuildPhase section */
/*对应Xcode中Build Phases下的脚本文件,包括:Embed Pods Frameworks,Check Pods Manifest.lock以及其他本地或者第三方的脚本文件信息 */
/* Begin PBXShellScriptBuildPhase section */
/* End PBXShellScriptBuildPhase section */
/*对应Xcode中Build Phases的Complie Sources的代码文件*/
/* Begin PBXSourcesBuildPhase section */
/* End PBXSourcesBuildPhase section */
/*记录了每个Target的targetProxy,每个targetProxy都是一个PBXContainerItemProxy类型,暂时没找到Xcode中的对应项 */
/* Begin PBXTargetDependency section */
/* End PBXTargetDependency section */
/* 不同地区的资源文件的引用信息,如果你项目使用了国际化,相关的xxx.string就在这个section中 */
/* Begin PBXVariantGroup section */
/* End PBXVariantGroup section */
/* 对应Xcode中 Build Settings中的配置信息*/
/* Begin XCBuildConfiguration section */
/* End XCBuildConfiguration section */
/* XCBuildConfiguration只是列举了所有Target的所有Setting项,下面这个文件区分,不同Target在Debug时使用哪个Setting项,在Release时使用哪个Setting项
*/
/* Begin XCConfigurationList section */
/* End XCConfigurationList section */
以上只是对工程文件做了个简单的介绍,可以对照自己的项目看一遍。
更详细的请参照:
Xcode工程文件 project.pbxproj小结。转载
XcodeProject的内部结构分析