Frage

Ich schrieb ein Skript, dass Anwendungen xcodebuild eine AdHoc Build einer iPhone-Anwendung zu generieren.

Ich würde zu bearbeiten möchte dieses Skript Ausgabe den Namen des Profil Provisioning verwendet, um den Build zu unterzeichnen.
Dies würde erlauben Sie mir, das Provisioning-Profil in der Zip enthalten, die automatisch generiert wird. Auf diese Weise kann ich automatisch das Archiv in den AdHoc Tester senden und sicher sein, dass sie die richtigen Provisioning Profile haben die App zu installieren.

Gibt es eine Möglichkeit zu extrahieren Sie den Provisioning-Profilnamen oder Datei verwendet, um die Anwendung zu unterschreiben :

  • von der builded und unterzeichnet Anwendung
  • von dem Xcode-Projekt (Ich mag nicht manuell die project.pbxproj Datei analysieren, da diese Lösung in der nächsten Xcode Update brechen könnte)
  • eine andere Möglichkeit, die skriptfähig ist

vorgeschlagen verwenden Sie den Befehl security den Namen des Zertifikats erhalten verwendet, um die App zu unterzeichnen. Sobald Sie diese Informationen haben, gibt es eine Möglichkeit, um dann den Namen des Provisioning-Profil finden?


Hier ist, was ich versucht:

Leider ist der Ausgang des xcodebuild während des Build diese Informationen nicht enthalten. Während der Codesign Schritt gibt es die Zeile:

/usr/bin/codesign -f -s "iPhone Distribution: My name" ...

, aber ich kann das nicht mit einem Zertifikat entsprechen.

Ich sah in Co-Design verwenden, und der Befehl

/usr/bin/codesign -d -vvv --entitlements - -r - /Users/lv/Desktop/TicTacBoo.app/TicTacBoo
sah vielversprechend aus, aber es gibt mir nicht die Informationen, die ich brauche.
Ich habe keine nützliche Option in xcodebuild entweder gefunden.

War es hilfreich?

Lösung

Das Provisioning-Profil ist bereits in die Anwendung. Sie brauchen nicht eine weitere Kopie in Ihrer ZIP-Datei (es sei denn, Ihre Tester nicht verstehen, wie die Kopie innerhalb der Anwendung verwenden.)

Es ist benannt YourApplication.app/embedded.mobileprovision

Diese beantworten Ihre Frage nicht, weil der ursprüngliche Dateiname verloren, jedoch scheint es, Ihr größeres Problem zu lösen.

Andere Tipps

Sie können mit der „Sicherheit“ aus dem Terminal; leider zumindest auf meinem MBP mit Snow Leopard scheint es einen Segmentation Fault in einer der Befehle, die Sie ausgeben müssen, um zu bewirken. Weitere Informationen Ausgabe vom Terminal

man security

Wie auch immer, hier ist das, was Sie versuchen können, vorausgesetzt, Ihre Entwicklung / Produktion Zertifikate werden im Login-Schlüsselbund gespeichert:

security unlock-keychain login.keychain;
security find-certificate -a -c "iPhone Distribution: Your name"  -p > cert.pem;

Der zweite Befehl bewirkt, dass die Segmentierungsfehler (durch das Argument -c verursacht wird), aber es sollte genau das sein, was Sie brauchen. Alternativ können Sie

security find-identity -p codesigning -v;

eine Liste aller gültigen Zertifikate erhalten Sie Code signieren Sie Ihre Anwendungen verwenden können. Für jedes Zertifikat enthält die Ausgabe auch die SHA1 Message-Digest, so dass Sie leicht das Zertifikat in den Schlüsselbund passende verdauen die SHA1 „iPhone Distribution: Ihr Name“ assoziiert suchen. Dies erfordert jedoch, dass Sie Ihre eigene Anwendung schreiben, um die Schlüsselanhänger-APIs.

Lassen Sie mich wissen, ob das funktioniert auf Ihrem Mac oder wenn Sie die gleiche Segmentierungsfehler Problem auftreten.

EDIT / UPDATE :. Ich habe den Fehler auf anderen Maschinen überprüft und reichte einen Fehler an Apple

Wie über die Suche in der _CodeSignature / CodeResources plist-Datei (die integrierten Anwendung) für Dateien vom Typ "mobileprovision"?

Hier ist eine Art und Weise zu tun, dass die Verwendung von Standardeinstellungen (1), um die plist-Datei zu lesen. Sie haben die CodeResources Datei auf etwas mit dem „.plist“ Suffix kopieren Vorgaben zu halten glücklich ...

cp /build/Distribution-iphoneos/MyApp.app/_CodeSignature/CodeResources /tmp/defaults.plist
defaults read /tmp/defaults files |grep .mobileprovision |grep -v embedded.mobileprovision

(in meinem Testfall gab es 2 .mobileprovision Einträge gibt, ignoriert das mit dem Namen "embedded.mobileprovision")

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top