450 Stimmen

Xcode "Erstellen und Archivieren" von der Kommandozeile aus

Xcode 3.2 bietet eine großartige neue Funktion im Menü "Build", "Build and Archive", die eine .ipa-Datei für die Ad-hoc-Verteilung erzeugt. Sie können auch den Organizer öffnen, zu "Archivierte Programme" gehen und "Programm bei iTunesConnect einreichen".

Gibt es eine Möglichkeit, "Build and Archive" von der Kommandozeile aus zu verwenden (als Teil eines Build-Skripts)? Ich würde annehmen, dass xcodebuild irgendwie involviert sein würde, aber die man Seite scheint nichts darüber zu sagen.

UPDATE Michael Grinich bat um eine Klarstellung; hier ist, was genau Sie nicht mit Befehlszeilen-Builds tun können, Funktionen, die Sie NUR mit dem Organizer von Xcode tun können, nachdem Sie "Build and Archive".

  1. Sie können auf "Share Application..." klicken, um Ihre IPA mit Beta-Testern zu teilen. Wie Guillaume weiter unten ausführt, benötigt diese IPA-Datei dank einiger Xcode-Magie keine separat verteilte .mobileprovision-Datei, die die Betatester installieren müssen; das ist magisch. Kein Kommandozeilenskript kann das. Das Skript von Arrix (eingereicht am 1. Mai) zum Beispiel erfüllt diese Anforderung nicht.
  2. Noch wichtiger ist, dass Sie nach dem Betatest eines Builds auf "Programm bei iTunes Connect einreichen" klicken können, um genau das gleiche Build bei Apple einzureichen, nämlich das von Ihnen getestete Binärprogramm, ohne es neu zu erstellen. Das ist von der Kommandozeile aus nicht möglich, weil das Signieren der App Teil des Build-Prozesses ist; man kann Bits für Ad-hoc-Beta-Tests signieren ODER man kann sie für die Einreichung im App Store signieren, aber nicht beides. Keine IPA, die auf der Kommandozeile erstellt wurde, kann auf Telefonen einem Betatest unterzogen werden und dann direkt bei Apple eingereicht werden.

Ich würde mich freuen, wenn mich jemand eines Besseren belehren könnte: Beide Funktionen funktionieren hervorragend in der Xcode-GUI und können nicht über die Befehlszeile repliziert werden.

2voto

Zitao Xiong Punkte 908

Versuchen Sie xctool, ein Ersatz für Apples xcodebuild, der das Erstellen und Testen von iOS- und Mac-Produkten erleichtert. Es ist besonders hilfreich für die kontinuierliche Integration. Es hat ein paar zusätzliche Funktionen:

  1. Führt die gleichen Tests wie Xcode.app aus.
  2. Strukturierte Ausgabe von Build- und Testergebnissen.
  3. Menschenfreundliche, ANSI-farbige Ausgabe.

Nr.3 ist äußerst nützlich. Ich weiß nicht, ob irgendjemand die Konsolenausgabe von xcodebuild lesen kann, ich kann es nicht, normalerweise gab es mir eine Zeile mit 5000+ Zeichen. Noch schwieriger zu lesen als ein Thesenpapier.

xctool: https://github.com/facebook/xctool

2voto

Maxim Kholyavkin Punkte 4235

Wenn Sie das nächste Werkzeug verwenden: https://github.com/nomad/shenzhen

dann ist diese Aufgabe sehr einfach:

which ipa 1>/dev/null 2>&1 || echo 'no shenzhen. to install use: sudo gem install shenzhen --no-ri --no-rdoc'
ipa build --verbose --scheme "${schemeName}"

fuente

2voto

Jidong Chen Punkte 430

Nach der Aktualisierung auf Xcode 8 habe ich festgestellt, dass enterprise ipa generate by

/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app" -o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" --sign "${DEVELOPER_NAME}" --embed "${PROVISONING_PROFILE}" 

Der Befehl kann aufgrund eines Signaturproblems nicht gestartet werden. Das Protokoll zeigt an, dass "warning: PackageApplication ist veraltet, verwenden Sie xcodebuild -exportArchive stattdessen.

Ich wechsle also zu xcodebuild -exportArchive und alles war wieder normal.

2voto

Sushil Punkte 31

Öffnen Sie Terminal und ziehen Sie Ihren Projektordner per Drag & Drop:

cd /Benutzer/Benutzername/Desktop/demo/

Führen Sie die folgenden Befehle nacheinander aus:

Baut die Anwendung als "demo.xcodeproj" in ein Archiv

xcodebuild archive -project demo.xcodeproj -scheme demo -archivePath /Users/username/Desktop/demo.xcarchive

Wenn Ihre Anwendung eine Poddatei mit dem Namen "demo.xcworkspace" hat.

xcodebuild -workspace Projekt-Name.xcworkspace -scheme Scheme-Name -sdk iphoneos -configuration Release Provisioning_Profile="Provision-Name" Development_Team="Team-ID" archive -archivePath /Pfad/To/Output/AppName.xcarchive archive

IPA Export Build Befehl

Download der Datei ExportOptions.plist von Hier

xcodebuild -exportArchive -archivePath /Users/shilpa/Desktop/demo.xcarchive -exportPath /Users/shilpa/Desktop/demo.ipa -exportOptionsPlist /Users/shilpa/Downloads/ExportOptions.plist

1voto

Michael Grinich Punkte 4732

Meinen Sie die Optionen zum Validieren/Freigeben/Absenden? Ich denke, die sind spezifisch für Xcode, und nicht für eine Befehlszeile Build-Tool geeignet.

Ich wette, mit etwas Geschick können Sie ein Skript erstellen, das dies für Sie erledigt. Es sieht so aus, als würden sie einfach in ~/Library/MobileDevice/Archived Applications/ mit einer UUDI und einer plist. Ich kann mir auch nicht vorstellen, dass es so schwer wäre, den Validator zurückzuentwickeln.

Der Prozess, den ich automatisieren möchte, ist das Versenden von Builds an Beta-Tester. (Da die Einreichung im App Store nur selten erfolgt, macht es mir nichts aus, dies manuell zu tun, zumal ich oft neue Beschreibungstexte hinzufügen muss.) Mit einem Pseudo-Build+Archiv, das die Xcode-CLI verwendet, kann ich bei jedem Code-Commit automatische Builds auslösen, IPA-Dateien mit eingebetteten Bereitstellungsprofilen erstellen und sie per E-Mail an die Tester senden.

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