美文网首页
工程文件

工程文件

作者: 若水water | 来源:发表于2019-11-06 14:21 被阅读0次

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

    相关文章

      网友评论

          本文标题:工程文件

          本文链接:https://www.haomeiwen.com/subject/rexubctx.html