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.

8voto

erick2red Punkte 1282

Gehen Sie zu dem Ordner, in dem sich Ihr Projekt Root befindet und:

xcodebuild -project projectname -activetarget -activeconfiguration archive

8voto

Suhaib Punkte 1991

Xcode 8:


IPA-Format:

xcodebuild -exportArchive -exportFormat IPA -archivePath MyMobileApp.xcarchive -exportPath MyMobileApp.ipa -exportProvisioningProfile 'MyMobileApp Distribution Profile'

Exportiert das Archiv MyMobileApp.xcarchive als IPA-Datei in den Pfad MyMobileApp.ipa unter Verwendung der Option Bereitstellungsprofils MyMobileApp Distribution Profile.

APP-Format:

xcodebuild -exportArchive -exportFormat APP -archivePath MyMacApp.xcarchive -exportPath MyMacApp.pkg -exportSigningIdentity 'Developer ID Application: My Team'

Exportiert das Archiv MyMacApp.xcarchive als PKG-Datei in den Pfad MyMacApp.pkg unter Verwendung der Anwendung appli-cation kation Signierung Identität Entwickler-ID Anwendung: Mein Team. Die Signieridentität des Installationsprogramms Entwickler-ID Installer: Mein Team wird implizit zum Signieren des exportierten Pakets verwendet.

Xcodebuild Manpage

8voto

Wie erstellt man ein iOS-Projekt mit einem Befehl?

Clean : xcodebuild clean -workspace work-space-name.xcworkspace -scheme scheme-name 

&&

Archive : xcodebuild archive -workspace work-space-name.xcworkspace -scheme "scheme-name" -configuration Release -archivePath IPA-name.xcarchive 

&&

Export : xcodebuild -exportArchive -archivePath IPA-name.xcarchive -exportPath IPA-name.ipa -exportOptionsPlist exportOptions.plist

**Was ist ExportOptions.plist?**

ExportOptions.plist wird in Xcode benötigt. Mit ihr können Sie einige Optionen angeben, wenn Sie eine ipa-Datei erstellen. Sie können die Optionen in einer benutzerfreundlichen Oberfläche auswählen, wenn Sie Xcode zum Archivieren Ihrer Anwendung verwenden.

Wichtig : Methode für Release und Entwicklung ist unterschiedlich in ExportOptions.plist

AppStore :

exportOptions_release ~ methode = app-store

Entwicklung

exportOptions_dev ~ Methode = Entwicklung

4voto

mix3d Punkte 3855

Noch einen Schritt weiter geht das Hochladen in iTunesConnect über die Befehlszeile mit Xcode 7 ! (Vorausgesetzt, Sie beginnen mit einer .ipa das mit dem richtigen Freigabeprofil und der richtigen Unterschriftsidentität signiert wurde).

Eingabe altool die CLI-Schnittstelle für den Application Loader ( docs , Seite 38). Tief in der Struktur von Xcode.app versteckt sich eine praktische Funktion, mit der wir direkt zu ItunesConnect hochladen können.

/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool

Einfach ausführen $ altool --upload-app -f file -u username [-p password] zum Hochladen Ihrer neu geprägten .ipa direkt zu Apple. Die Eingabe des Kennworts ist optional, und Sie werden zur Eingabe aufgefordert, wenn Sie es nicht angeben.

Wenn während der Überprüfung Probleme mit der Anwendung auftreten, werden diese in der Konsole ausgegeben.

Wahrscheinlich müssen Sie den Pfad zu altool wenn Sie den Speicherort nicht speichern wollen.

export PATH=$PATH:/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/

Das war's! Melden Sie sich einfach bei iTunesConnect.com an und wählen Sie Ihren neuen Build zum Testen mit testflight aus.

Abschließende Anmerkung: Wenn Sie eine Fehlermeldung erhalten Exception while launching iTunesTransporter: Transporter not found at path: /usr/local/itms/bin/iTMSTransporter. You should reinstall the application können Sie der Anregung auf diese SO-Antwort um einen Symlink an den richtigen Ort zu setzen:

ln -s /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/itms /usr/local/itms

3voto

Guillaume Punkte 21515

In Anlehnung an Vincents Antwort habe ich ein Skript geschrieben, das dies ermöglicht: xcodearchive
Es ermöglicht Ihnen, Ihr Projekt über die Befehlszeile zu archivieren (eine ipa zu erzeugen). Betrachten Sie es als die Schwester des xcodebuild Befehl, sondern für die Archivierung.

Der Code ist auf Github verfügbar: http://github.com/gcerquant/xcodearchive

Eine Option des Skripts besteht darin, die Archivierung der dSYM-Symbole in einem Archiv mit Zeitstempel zu aktivieren. Es gibt keine Ausrede mehr, die Symbole nicht aufzubewahren und das Absturzprotokoll, das Sie möglicherweise später erhalten, nicht symbolisieren zu können.

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