Xcode 3.2 bietet eine fantastische neue Funktion im Menü "Erstellen", "Erstellen und Archivieren", die eine IPA-Datei generiert, die für die Ad-hoc-Verteilung geeignet ist. Sie können den Organizer auch öffnen, zu "Archivierte Anwendungen" und "Anwendung an iTunesConnect senden" wechseln.
Gibt es eine Möglichkeit, "Erstellen und Archivieren" über die Befehlszeile (als Teil eines Erstellungsskripts) zu verwenden? Ich würde annehmen, dass xcodebuild
das irgendwie involviert wäre, aber die man
Seite scheint nichts darüber zu sagen.
UPDATE Michael Grinich bat um Klarstellung; Hier ist, was genau Sie mit Befehlszeilen-Builds nicht tun können. Funktionen, die Sie NUR mit Xcode's Organizer ausführen können, nachdem Sie "Build and Archive" erstellt haben.
- Sie können auf "Anwendung teilen ..." klicken, um Ihre IPA für Betatester freizugeben. Wie Guillaume weiter unten ausführt, erfordert diese IPA-Datei aufgrund von Xcode-Magie keine separat verteilte .mobileprovision-Datei, die Betatester installieren müssen. Das ist magisch. Kein Befehlszeilenskript kann dies tun. Zum Beispiel erfüllt das Skript von Arrix (eingereicht am 1. Mai) diese Anforderung nicht.
- Noch wichtiger ist, dass Sie nach dem Betatest eines Builds auf "Anwendung an iTunes Connect senden" klicken können, um diesen GENAUEN Build an Apple, die von Ihnen getestete Binärdatei, zu senden, ohne ihn neu zu erstellen. Dies ist über die Befehlszeile nicht möglich, da das Signieren der App Teil des Erstellungsprozesses ist. Sie können Bits für Ad-hoc-Betatests signieren ODER Sie können sie für die Übermittlung an den App Store signieren, jedoch nicht für beide. Kein auf der Befehlszeile basierendes IPA kann auf Telefonen Beta-getestet und dann direkt an Apple gesendet werden.
Ich würde mich freuen, wenn jemand mitkommt und mir das Gegenteil beweist: Beide Funktionen funktionieren hervorragend in der Xcode-Benutzeroberfläche und können nicht über die Befehlszeile repliziert werden.
quelle
xcodebuild
. Beim Erstellen einer IPA-Datei wird die App lediglich in ein Verzeichnis mit dem Namen "Payload" verschoben, dieses Verzeichnis komprimiert und in MyAppName.ipa umbenannt.Antworten:
Ich habe herausgefunden, wie der Erstellungs- und Archivierungsprozess über die Befehlszeile automatisiert werden kann. Ich habe gerade einen Blog-Artikel geschrieben erklärt wird, wie Sie dies erreichen können.
Der Befehl, den Sie verwenden müssen, lautet
xcrun
:Alle Details finden Sie im Artikel . Wenn Sie Fragen haben, zögern Sie nicht zu fragen.
quelle
RELEASE_BUILDDIR
muss aber ein absoluter Weg sein.-o "${ipa_path}"
ein absoluter Pfad sein muss. Andernfalls erhalten Sie wahrscheinlicherror: Unable to create '.../...ipa'
oder es wird stillschweigend ignoriert erstellen. Verdammt, es hat mich ein paar Stunden verschwendet.Mit Xcode 4.2 können Sie dazu das Flag -scheme verwenden:
Nach diesem Befehl wird das Archiv im Xcode Organizer angezeigt.
quelle
archive
Aktion keine Einstellungen berücksichtigt , die Sie durch diesen Aufruf bereitgestellt haben, außer dem Arbeitsbereich und dem Schema - dies hat mich nur Stunden gekostet !xcode-select <path to Xcode.app>
-scheme <SchemeName>
“Archiv
IPA-Export ( bitte beachten Sie die Exportoptionsliste )
Für diejenigen, die nicht über exportOptions.plist Bescheid wissen, https://blog.bitrise.io/new-export-options-plist-in-xcode-9
Wenn Sie dies für das Erstellen von Projekten in CI / CD-Tools wie teamcity / jenkins verwenden, stellen Sie bitte sicher, dass Sie den richtigen xcode verwenden, der im Build-Agent für Archivierung und Export installiert ist.
Sie können hierfür eine der beiden folgenden Optionen verwenden.
Hier ist ein Befehlszeilenskript zum Erstellen eines Archivs und eines IPA-Beispiels. Ich habe ein iPhone xcode-Projekt, das sich im Desktop / MyiOSApp-Ordner befindet.
Führen Sie nacheinander folgende Befehle aus:
Dies ist mit Xcode 5 getestet und funktioniert gut für mich.
quelle
xcodebuild -workspace <ProjectName>/<ProjectName>.xcworkspace -scheme <schemeName> clean archive -configuration release -sdk iphoneos -archivePath <ProjectName>.xcarchive
wirft Fehler:requires a provisioning profile with the Associated Domains feature. Select a provisioning profile for the "Release" build configuration in the project editor.
Ich habe mein eigenes Build-Skript verwendet, um das ipa-Paket für die Ad-hoc-Verteilung zu generieren.
Das Skript erhöht auch die Versionsnummer. Sie können diesen Teil entfernen, wenn er nicht benötigt wird. Ich hoffe es hilft.
quelle
Das
xcodebuild
Tool kann Archivprodukte mit dem -exportArchive erstellen und exportieren Flag (ab Xcode 5) . Der Exportschritt war bisher nur über die Xcode Organizer-Benutzeroberfläche möglich.Archivieren Sie zuerst Ihre App:
Gegeben
$ARCHIVE_PATH
(der Weg zum .xcarchive Datei) angegeben ist, exportieren Sie die App aus dem Archiv mit einer der folgenden :iOS .ipa Datei:
Mac .app Datei:
In beiden Befehlen sind die Argumente -exportProvisioningProfile und -exportSigningIdentity optional.
man xcodebuild
Einzelheiten zur Semantik. In diesen Beispielen wurde im Bereitstellungsprofil für den iOS-Build ein AdHoc-Verteilungsbereitstellungsprofil angegeben, und in der Signaturidentität für die Mac-App wurde eine Entwickler-ID für den Export als Drittanbieteranwendung angegeben (dh nicht über den Mac App Store verteilt).quelle
-workspace
Option zu xcodebuild (und einen Pfad zu einem Arbeitsbereich) hinzuzufügen ?man xcodebuild
heißt es: "Um einen Xcode-Arbeitsbereich zu erstellen, müssen Sie die Optionen -workspace und -scheme übergeben, um den Build zu definieren."Wir haben eine iPad-App mit XCode 4.2.1 entwickelt und wollten den Build in unsere Continuous Integration (Jenkins) für die OTA-Distribution integrieren. Hier ist die Lösung, die ich gefunden habe:
Dann lädt Jenkins die ipa-, plist- und html-Dateien auf unseren Webserver hoch.
Dies ist die Plist-Vorlage:
Um dies einzurichten, müssen Sie das Verteilungszertifikat und das Bereitstellungsprofil in den Schlüsselbund des angegebenen Benutzers importieren.
quelle
$WORKSPACE
statt$PWD
zu generierenAPP_PATH
Ich fand einige der anderen Antworten hier schwierig, um loszulegen. Dieser Beitrag hat wenn für mich. Einige Pfade müssen möglicherweise absolut sein, wie in den anderen Antworten erwähnt.
Der Befehl:
quelle
Sie KÖNNEN einen Build tatsächlich zurücktreten, genau wie XCode, damit Sie dieselbe Binärdatei testen und versenden können. Zum Beispiel erstelle ich in meinem Skript (ähnlich wie oben) meine als AdHoc-Build signierte Release-Version, archiviere sie dann als IPA zum Testen, trete dann mit meinem Distributionszertifikat zurück und erstelle eine Zip-Datei, an die ich sende Apfel. Die relevante Zeile lautet:
quelle
Für Xcode 7 haben Sie eine viel einfachere Lösung. Die einzige zusätzliche Arbeit besteht darin, dass Sie eine Konfigurationsplist-Datei für den Export des Archivs erstellen müssen.
( Im Vergleich zu Xcode 6, in den Ergebnissen
xcrun xcodebuild -help
,-exportFormat
und-exportProvisioningProfile
Optionen genannt werden nicht mehr, erstere gelöscht werden, und letzteres wird ersetzt durch-exportOptionsPlist
.)Schritt 1 : Wechseln Sie in das Verzeichnis einschließlich der Datei .xcodeproject oder .xcworkspace.
Schritt 2 : Verwenden Sie Xcode oder
/usr/libexec/PlistBuddy exportOptions.plist
, um eine Plist-Datei für Exportoptionen zu erstellen. Übrigensxcrun xcodebuild -help
erfahren Sie, welche Schlüssel Sie in die Plist-Datei einfügen müssen.Schritt 3 : Erstellen Sie die .xcarchive-Datei (tatsächlich Ordner) wie folgt (build / directory wird jetzt automatisch von Xcode erstellt).
Schritt 4 : Exportieren Sie als .ipa-Datei wie folgt, die sich von Xcode6 unterscheidet
Jetzt erhalten Sie eine IPA-Datei im Verzeichnis build /. Senden Sie es einfach an den Apple App Store.
Die von Xcode 7 erstellte ipa-Datei ist übrigens viel größer als von Xcode 6.
quelle
-scheme
und-configuration
Optionen festgelegt , wie die IPV - Datei signieren.Ich habe eine kurze Beschreibung der folgenden Schritte und Parameter gegeben, die beim Generieren eines IPA mit dem folgenden Terrminal übergeben werden müssen:
Wechseln Sie in den Ordner, der die Datei MyApp.xcodeproject im Terminal enthält
Mit dem unten angegebenen Befehl erhalten Sie alle Ziele der Anwendung
Nachdem der obige Befehl ausgeführt wurde, erhalten Sie eine Liste der Ziele, von denen Sie ein bestimmtes Ziel auswählen sollten, das Sie zum Generieren von .ipa benötigen
Der obige Befehl erstellt das Projekt und erstellt eine .app-Datei. Der Pfad zum Suchen der .app-Datei lautet
./build/Release-iphoneos/MyApp.app
Nachdem die Erstellung erfolgreich war, führen Sie den folgenden Befehl aus, um die IPA der Anwendung mithilfe des Entwicklernamens und des Bereitstellungsprofils mithilfe der folgenden Syntax zu generieren:
Erläuterung der einzelnen Parameter in der obigen Syntax:
quelle
Xcode 8:
IPA-Format:
Exportiert das Archiv MyMobileApp.xcarchive als IPA-Datei in den Pfad MyMobileApp.ipa mithilfe des Bereitstellungsprofils MyMobileApp Distribution Profile.
APP-Format:
Exportiert das Archiv MyMacApp.xcarchive als PKG-Datei in den Pfad MyMacApp.pkg unter Verwendung der Kationssignaturidentität der Anwendungsanwendung. Entwickler-ID Anwendung: Mein Team. Das Installationsprogramm signiert Identität Entwickler-ID Installationsprogramm: Mein Team wird implizit zum Signieren des exportierten Pakets verwendet.
Xcodebuild Manpage
quelle
Gehen Sie zu dem Ordner, in dem sich Ihr Projektstamm befindet, und:
quelle
Gehen Sie noch einen Schritt weiter und laden Sie mit Xcode 7 über die Befehlszeile auf iTunesConnect hoch ! (Angenommen, Sie beginnen mit einem
.ipa
, der mit dem richtigen Release-Profil und der richtigen Signaturidentität signiert wurde.)Geben Sie
altool
die CLI-Schnittstelle für den Application Loader ein (docs
, Seite 38). Tief in der Struktur von Xcode.app versteckt, ist eine praktische Funktion, mit der wir direkt auf ItunesConnect hochladen können.Einfach ausführen
$ altool --upload-app -f file -u username [-p password]
, um Ihre neu geprägte Datei hochzuladen.ipa
direkt auf Apple . Das Kennwort ist optional und fordert Sie dazu auf, wenn Sie den Befehl nicht verwenden.Wenn während des Überprüfungsschritts Probleme mit der App auftreten, druckt die Konsole diese aus.
Sie müssen den Pfad wahrscheinlich exportieren,
altool
wenn Sie seinen Speicherort nicht speichern möchten.Das ist es! Melden Sie sich einfach bei iTunesConnect.com an und wählen Sie Ihren neuen Build zum Testen mit testflight aus.
Schlussbemerkung: 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 dem Vorschlag in dieser SO-Antwort folgen , um einen Symlink zum richtigen Speicherort auszuführen:quelle
Um Vincents Antwort zu verbessern, habe ich dazu ein Skript geschrieben:
xcodearchive
Es ermöglicht Ihnen, Ihr Projekt über die Befehlszeile zu archivieren (ein ipa zu generieren). Stellen Sie es sich wie die Schwester des
xcodebuild
Kommandos vor, aber zur Archivierung.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. Keine Entschuldigung, die Symbole nicht mehr beizubehalten und das Absturzprotokoll, das Sie möglicherweise später erhalten, nicht mehr zu symbolisieren.
quelle
Wie erstelle ich ein iOS-Projekt mit einem Befehl?
&&
&&
Was ist ExportOptions.plist?
ExportOptions.plist ist in Xcode erforderlich. Hier können Sie einige Optionen angeben, wenn Sie eine IPA-Datei erstellen. Sie können die Optionen in einer benutzerfreundlichen Benutzeroberfläche auswählen, wenn Sie Ihre App mit Xcode archivieren.
Wichtig : Die Methode zur Freigabe und Entwicklung unterscheidet sich im AppStore von ExportOptions.plist
:
Entwicklung
quelle
Probieren Sie xctool aus. Es ist ein Ersatz für Apples xcodebuild, der das Erstellen und Testen von iOS- und Mac-Produkten erleichtert. Dies ist besonders hilfreich für die kontinuierliche Integration. Es hat ein paar zusätzliche Funktionen:
Nr. 3 ist äußerst nützlich. Ich weiß nicht, ob jemand die Konsolenausgabe von xcodebuild lesen kann, ich kann nicht, normalerweise gab es mir eine Zeile mit mehr als 5000 Zeichen. Noch schwerer zu lesen als eine Abschlussarbeit.
xctool: https://github.com/facebook/xctool
quelle
Wenn Sie das nächste Tool verwenden: https://github.com/nomad/shenzhen
dann ist diese Aufgabe sehr einfach:
Quelle
quelle
Nach dem Update auf Xcode 8 stellte ich fest, dass Enterprise-IPA von generiert wird
Also wechselte ich zu
xcodebuild -exportArchive
und alles ging wieder normal.quelle
Sie meinen die Optionen zum Validieren / Teilen / Senden? Ich denke, diese sind spezifisch für Xcode und nicht für ein Befehlszeilen-Build-Tool geeignet.
Ich wette, Sie könnten mit etwas Klugheit ein Skript erstellen, um es für Sie zu erledigen. Es sieht so aus,
~/Library/MobileDevice/Archived Applications/
als wären sie nur mit einem UUDI und einer Plist gespeichert . Ich kann mir nicht vorstellen, dass es so schwierig sein würde, den Validator zurückzuentwickeln.Der Prozess, den ich automatisieren möchte, ist das Senden von Builds an Betatester. (Da die Übermittlung von App Stores selten erfolgt, macht es mir nichts aus, dies manuell zu tun, insbesondere da ich häufig neuen Beschreibungstext hinzufügen muss.) Durch Ausführen eines Pseudo-Build + -Archivs mit der CLI von Xcode kann ich automatische Builds aus jedem Code-Commit auslösen. Erstellen Sie IPA-Dateien mit eingebetteten Bereitstellungsprofilen und senden Sie sie per E-Mail an Tester.
quelle
xcodebuild
und eine IPA erstellt.