2010-12-01 4 views

Antwort

40

Der defaults Befehl kann auf jede plist-Datei lesen/schreiben, es nur einen Weg geben, abzüglich die .plist Erweiterung:

$ defaults read /Applications/Preview.app/Contents/Info CFBundleIdentifier 

com.apple.Preview 

Dies zieht den CFBundleIdentifier Wert direkt aus der Info.plist Datei der Anwendung zu bündeln.

Defaults funktioniert auch mit Binärplisten ohne zusätzliche Schritte.

+3

Dies ist die bessere Antwort (besonders da PlistBuddy nicht mehr standardmäßig installiert ist); Sie sollten es auswählen. – Olie

+13

Beachten Sie auch, dass standardmäßig ein vollständiger Pfad und kein relativer Pfad angezeigt werden soll, selbst wenn Sie sich gerade in dem Verzeichnis mit der PLIST-Datei befinden, die Sie lesen möchten. (Seltsam!) – Olie

+6

Also, wenn Sie es innerhalb eines Verzeichnisses tun, können Sie verwenden: Standard schreiben $ PWD/SomeMyDirectory/Info.plist CFBundleIdentifier "com.apple.Preview" – iVader

4

Sie können die Datei direkt aus dem gebauten Produkt lesen. Wenn Sie jedoch die Datei info.plist selbst im Editor betrachten, sehen Sie die Shell-Variablen selbst. Z.B. die Bundle-ID hat die folgende Shell-Befehl:

com.yourcompany.${PRODUCT_NAME:rfc1034identifier} 

Sie können ${PRODUCT_NAME:rfc1034identifier} in jedem Shell-Skript aufrufen, die Xcode läuft und es sollte füllen.

+0

Das klingt gut, obwohl ich es nicht getestet habe. Der Nachteil ist, dass du die Bundle-ID nicht zurückbekommst, sondern nur den letzten Teil, also musst du den "com.mycompanyname" -Teil irgendwo fest codieren ... – Dimitris

3

Auf dem Mac ist ein Befehlszeilenprogramm namens PlistBuddy installiert, das Werte in einem PLIST lesen/schreiben kann. Tippe 'man PlistBuddy' im Terminal, um weitere Informationen zu erhalten.

+0

Ich habe PlistBuddy ausprobiert und viel damit gespielt. Das Problem ist, dass PlistBuddy die Bundle-ID drucken, aber nicht zurückgeben kann (es gibt nur 0 oder 1 zurück). Da ich ein Shell-Noob bin, hatte ich Schwierigkeiten, das einer Variablen zuzuordnen. Es war jedoch, wie ich es geschafft habe, es zum Laufen zu bringen. Ich werde jetzt meine Antwort posten. – Dimitris

33

Mit PlistBuddy, eine App von Apple ist es möglich, die Zeichenfolge zuweisen wie folgt var:

#!/bin/sh 
BUNDLE_ID=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${BUILD_ROOT}/${INFOPLIST_PATH}") 

Wo BUILD_ROOT und INFOPLIST_PATH sind Variablen, die von Xcode gesetzt, wenn Sie dieses Skript in einem "Run Script" laufen Bauphase.

+1

PlistBuddy ist nicht immer im System vorhanden. Wenn Sie das Skript verteilen, können Sie die Verwendung von Standardwerten in Erwägung ziehen, wie die anderen Antworten darauf zeigen. –