工程文件

.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的内部结构分析

你可能感兴趣的:(工程文件)