7 Stimmen

Organisieren von Xcode 4.0 Kopie Bündelressourcen

Gibt es einen einfachen Weg, die Dateien innerhalb der Copy-Bundle-Ressourcen in Xcode 4.0 zu organisieren? Ich habe mehrere Ziele für mein Projekt, und jedes Mal, wenn ich Dateien hinzufüge, muss ich sie meistens in jedes Projekt hinzufügen. Es würde sehr helfen, wenn es einen einfachen Weg gäbe, mich zu fangen, wenn ich versehentlich vergesse, Ressourcen zu jedem Ziel zu kopieren (außer nur auf die Anzahl der Dateien im Bundle zu schauen, die sich letztendlich von Projekt zu Projekt unterscheiden wird).

Es wäre viel einfacher, wenn ich Ordner innerhalb der Ressourcenliste erstellen könnte, aber es scheint, dass ich das nicht kann. Zumindest würde es vielleicht helfen, wenn ich sie automatisch alphabetisch sortieren könnte.

3voto

karim Punkte 15068

Was Sie tun müssen, ist die Datei .pbxproj zu analysieren. Alle verknüpften Dateien und Ressourcen in .pbxproj werden anhand ihrer eigenen UUID identifiziert. Also,

  1. Holen Sie sich die UUID des rootObject
  2. Holen Sie sich die Liste der Ziele-UUIDs von rootObject
  3. Für jedes Ziel erhalten Sie die Liste der UUIDs für Resource, Source und Framework. Und finden Sie die Liste der Dateien-UUIDs für alle drei Ressourcentypen
  4. Vergleichen Sie die Liste der Ressourcen für jedes Ziel.

Einige Hinweise, Das Format der Projektdatei ist folgendermaßen, das rootObject verweist auf andere Objekte.

{
    archiveVersion = 1;
    classes = {
    };
    objectVersion = 45;
    objects = {
         /* .... Liste aller Objekte sind hier .... */
        }
    rootObject = 29B97313FDCFA39411CA2CEA /* Projektobjekt */;
}

Vom rootObject aus können wir dem Ziel Wert folgen.

/* Beginn Abschnitt PBXProject */
        29B97313FDCFA39411CA2CEA /* Projektobjekt */ = {
            isa = PBXProject;
            buildConfigurationList = C01FCF4E08A954540054247B /* Build-Konfigurationsliste für PBXProject "MyProject" */;
            compatibilityVersion = "Xcode 3.1";
            developmentRegion = Englisch;
            hasScannedForEncodings = 1;
            knownRegions = (
                Englisch,
                Deutsch,
                de,
            );
            mainGroup = 29B97314FDCFA39411CA2CEA /* Benutzerdefinierte Vorlage */;
            projectDirPath = "";
            projectRoot = "";
            targets = (
                1D6058900D05DD3D006BFB54 /* TargetDebug */,
                C446CDCB12BA35A1001324C8 /* TargetAdHoc */,
                C446CF2D12BA3DDC001324C8 /* TargetAppStore */,
            );
        };
/* End Abschnitt PBXProject */

Im Zielabschnitt der Projektdatei enthält buildPhases den Link zur kopierten Bundle-Ressourcenliste und Verknüpfung.

    /* Beginn Abschnitt PBXNativeTarget */
            1D6058900D05DD3D006BFB54 /* TargetAdHoc */ = {
                isa = PBXNativeTarget;
                buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build-Konfigurationsliste für PBXNativeTarget "TargetAdHoc" */;
                buildPhases = (
                    1D60588D0D05DD3D006BFB54 /* Ressourcen */,
                    1D60588E0D05DD3D006BFB54 /* Quellen */,
                    1D60588F0D05DD3D006BFB54 /* Frameworks */,
                );
                buildRules = (
                );
                dependencies = (
                );
                name = TargetAdHoc;
                productName = MyProject;
                productReference = 1D6058910D05DD3D006BFB54 /* MyProject.app */;
                productType = "com.apple.product-type.application";
            };

C446CDCC12BA35A1001324C8 /* Ressourcen */ = {
            isa = PBXResourcesBuildPhase;
            buildActionMask = 2147483647;
            files = (
                C446CDCD12BA35A1001324C8 /* MainWindow.xib in Resources */,
                    /* ....... Liste aller PNGs und XIB-Dateien..... */
                            81CDEBBF13B21B790067A088 /* AnImage.png in Resources */,
            );
            runOnlyForDeploymentPostprocessing = 0;
        };

1voto

Richard Punkte 3288

(auf Xcode 3.2.x): Du kannst die Dateien in einer Phase alphabetisch sortieren, indem du die Phase auswählst, dann Bearbeiten -> Sortieren -> Nach Name.
Was das Aufteilen in "Ordner" betrifft – nichts hindert dich daran, mehrere Kopiervorgänge zu haben! Du kannst sogar jedem einen aussagekräftigen Namen geben.

0voto

mharper Punkte 3112

Weiß nicht, ob es in diesem Fall hilfreich ist, aber in Xcode, wenn Sie eine Datei auswählen und Informationen dazu abrufen (Befehl-I), gibt es einen der Registerkarten "Targets". Von dort aus können Sie alle Ziele auswählen, zu denen eine Datei gehören soll. Ich glaube, dass für nicht kompilierte Dateien die Datei lediglich der Phase "Copy Bundle Resources" des ausgewählten Ziels hinzugefügt wird.

0voto

Danny Parker Punkte 1613

Sie können Ordner in Ihrer Ressourcengruppe haben. Ziehen Sie einfach einen echten Finder-Ordner in Xcode und wählen Sie 'Ordnerverweise für hinzugefügte Ordner erstellen' und wählen Sie alle Ziele aus, die Sie verwenden möchten.

Dies erstellt einen dynamischen Ordnerverweis, der automatisch alle Dateien innerhalb dieses Ordners hinzufügt, ohne dass Sie die Dateien jedes Mal einzeln hinzufügen müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X