организация ресурсов пакета копирования xcode 4.0 - PullRequest
7 голосов
/ 24 декабря 2010

Есть ли простой способ организовать файлы в ресурсах Copy Bundle в xcode 4.0?У меня есть несколько целей для моего проекта, и каждый раз, когда я добавляю файлы, мне нужно, в большинстве случаев, добавлять их в каждый проект.Было бы очень полезно, если бы у меня был простой способ поймать себя, когда я по ошибке забываю копировать ресурсы для каждой цели (кроме просто просмотра количества файлов в комплекте, что в конечном итоге будет отличаться от того же для каждого проекта).

Было бы намного проще, если бы я мог создавать папки в списке ресурсов, но, похоже, не смогу.По крайней мере, это может помочь, если я смогу автоматически разложить их по алфавиту.

Ответы [ 4 ]

3 голосов
/ 23 июня 2011

Что вам нужно сделать, это проанализировать .pbxproj файл. Все связанные файлы и ресурсы в .pbxproj идентифицируются по собственным UUID . Итак,

  1. Получите UUID rootObject
  2. Получить список целей UUID из rootObject s
  3. Для каждой цели получите список UUID для Resource, Source и Framework. А также найти список файлов UUID для всех трех типов ресурсов
  4. Сравните список ресурсов для каждой из целей.

Некоторые намеки, Формат файла проекта такой, rootObject ссылается на другие объекты.

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

Из корневого объекта мы можем следовать значению target .

/* 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;
        };
1 голос
/ 03 апреля 2011

(в Xcode 3.2.x): Вы можете алфавитно расположить файлы в фазе, выбрав фазу, затем Редактировать -> Сортировать -> По имени.
Насколько разбить их на«папки» - ничто не мешает вам иметь несколько этапов копирования!Вы можете даже дать каждому описательное имя.

0 голосов
/ 08 мая 2012

Вы можете иметь папки в вашей группе ресурсов. Просто перетащите настоящую папку поиска в xcode, выберите «Создать ссылки на папки для добавленных папок» и выберите все цели, которые вы хотите использовать.

Это создаст динамическую ссылку на папку, которая автоматически добавит все файлы в эту папку без необходимости добавлять файлы каждый раз по отдельности.

0 голосов
/ 24 декабря 2010

Не знаю, полезно ли это в этом случае, но в Xcode, когда вы выбираете файл и получаете информацию о нем (команда-I), одна из вкладок называется «Цели».Оттуда вы можете выбрать все цели, частью которых должен быть файл.Я считаю, что для не скомпилированных файлов, он просто добавляет файл в фазу Copy Bundle Resources выбранных целей.

...