组织xcode 4.0拷贝bundle资源

是否有一种简单的方法来组织xcode 4.0中的复制包资源中的文件? 我的项目有多个目标,每次添加文件时,我都需要在大多数时间将它们添加到每个项目中。 如果我错误地忘记将资源复制到每个目标(除了只查看捆绑中的文件数量,这最终会偏离每个项目的相同),那么这对我来说会很有帮助。 )。

如果我可以在资源列表中创建文件夹,它会容易得多,但看起来我无法做到。 至少,如果我能够自动按字母顺序排列,这可能会有所帮助。


你需要做的是解析.pbxproj文件。 .pbxproj中的所有链接文件和资源都是从它们自己的UUID中标识的。 所以,

  • 获取rootObject的UUID
  • rootObject获取目标UUID的列表
  • 为每个目标获取ResourceSourceFramework的UUID列表。 并找到所有三种资源类型的文件UUID列表
  • 比较每个目标的资源列表。
  • 一些提示,项目文件的格式是这样的, rootObject引用其他对象。

    {
        archiveVersion = 1;
        classes = {
        };
        objectVersion = 45;
        objects = {
             /* .... List of all objects are here .... */
            }
        rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
    }
    

    从rootObject中,我们可以遵循目标值

    /* Begin PBXProject section */
            29B97313FDCFA39411CA2CEA /* Project object */ = {
                isa = PBXProject;
                buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MyProject" */;
                compatibilityVersion = "Xcode 3.1";
                developmentRegion = English;
                hasScannedForEncodings = 1;
                knownRegions = (
                    English,
                    German,
                    de,
                );
                mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
                projectDirPath = "";
                projectRoot = "";
                targets = (
                    1D6058900D05DD3D006BFB54 /* TargetDebug */,
                    C446CDCB12BA35A1001324C8 /* TargetAdHoc */,
                    C446CF2D12BA3DDC001324C8 /* TargetAppStore */,
                );
            };
    /* End PBXProject section */
    

    在项目文件的目标部分中, buildPhases包含指向复制的束资源列表和链接的链接。

        /* Begin PBXNativeTarget section */
                1D6058900D05DD3D006BFB54 /* TargetAdHoc */ = {
                    isa = PBXNativeTarget;
                    buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "TargetAdHoc" */;
                    buildPhases = (
                        1D60588D0D05DD3D006BFB54 /* Resources */,
                        1D60588E0D05DD3D006BFB54 /* Sources */,
                        1D60588F0D05DD3D006BFB54 /* Frameworks */,
                    );
                    buildRules = (
                    );
                    dependencies = (
                    );
                    name = TargetAdHoc;
                    productName = MyProject;
                    productReference = 1D6058910D05DD3D006BFB54 /* MyProject.app */;
                    productType = "com.apple.product-type.application";
                };
    
    
    C446CDCC12BA35A1001324C8 /* Resources */ = {
                isa = PBXResourcesBuildPhase;
                buildActionMask = 2147483647;
                files = (
                    C446CDCD12BA35A1001324C8 /* MainWindow.xib in Resources */,
                        /* ....... list of all PNGs and XIB files..... */
                                81CDEBBF13B21B790067A088 /* AnImage.png in Resources */,
                );
                runOnlyForDeploymentPostprocessing = 0;
            };
    

    (在Xcode 3.2.x上):通过选择阶段,然后编辑 - >排序 - >按名称,可以按阶段对文件进行字母排序。
    至于把它们分解成“文件夹” - 没有什么阻止你有多个复制阶段! 你甚至可以给每个人一个描述性的名字。


    不知道这个实例是否有用,但在Xcode中,当您选择一个文件并在其上获取信息时(命令I),其中一个选项卡是“目标”。 从那里,你可以选择你想要文件的一部分的所有目标。 我相信对于未编译的文件,它只是将文件添加到所选目标的复制包资源阶段。

    链接地址: http://www.djcxy.com/p/49549.html

    上一篇: organizing xcode 4.0 copy bundle resources

    下一篇: Can Visual Studio 2010 do Code Coverage analysis on F# modules?