Wir haben eine API, die Benutzer aufrufen können, um Cordova Apps/Projekte zu erstellen, ihr www-Verzeichnis hochzuladen und dann mit der Kompilierung zu beginnen und die ausführbare Binärdatei herunterzuladen. Diese Binärdatei wird dann in einen privaten App Store übertragen.Exportieren von .ipa-Datei aus Xcode-Projekt ohne jemals zu öffnen Xcode
Ich habe Probleme mit dem Kompilierungsschritt für iOS. Der Cordova-Build-Schritt ist kein Problem, aber er gibt keine Binärdatei aus, wie es für Android der Fall ist. Nach der Lektüre alles, was ich auf Stackoverflow gefunden und an anderer Stelle, der Plan war:
xcodebuild clean -configuration Release -alltargets
xcodebuild -scheme MyApp archive -archivePath build/MyApp
xcodebuild -exportArchive -exportFormat ipa -archivePath "build/MyApp.xcarchive" -exportPath "MyApp.ipa" -exportProvisioningProfile "My Prov Profile"
In Anbetracht, dass die Unterzeichnung Identität und alles richtig eingerichtet ist, es funktioniert fast. Der erste Befehl wird ausgeführt. Der zweite Befehl hängt einfach.
Wenn ich jedoch das Projekt in Xcode öffnen und dann die Befehle ausführen, kompiliert und exportiert es, und ich bin mit einer .ipa-Datei, was ich wollte. Es scheint, dass Xcode beim ersten Öffnen des Projekts einen Arbeitsbereich und einige schemabezogene Dinge einrichtet.
Gibt es eine Möglichkeit, xcodebuild (oder xcrun, oder irgendetwas, für diese Angelegenheit), um diese Arbeitsbereich-Datei für mich zu erstellen?
Oder gibt es eine andere Möglichkeit, dies zu erreichen?
Im Moment habe ich eine Lösung, wo ich das Xcode-Projekt öffnen, 15 Sekunden warten und dann fortfahren. Aber ich kann mir tausend Möglichkeiten vorstellen, die irgendwann scheitern werden, also würde ich es gern etwas eleganter machen.
Ich habe derzeit Xcode 6.3 installiert, wenn das relevant ist.
Update: Opals Antwort unten setze mich auf den richtigen Weg (denke ich). Am Ende habe ich ein geteiltes Schema nach Opals Link exportiert und dieses als Vorlage für zukünftige Apps verwendet. Die Lösungen waren so etwas wie diese:
# Copy shared scheme file into directory
mkdir /path/to/project/dir/MyApp.xcodeproj/xcshareddata
mkdir /path/to/project/dir/MyApp.xcodeproj/xcshareddata/xcschemes
cp data/MyScheme.xcscheme /path/to/project/dir/MyApp.xcodeproj/xcshareddata/xcschemes/.
# Use sed to replace app name in scheme file
sed -i '' "s/%app_name%/MyApp/g" MyApp.xcodeproj/xcshareddata/xcschemes/MyScheme.xcscheme
# CD into directory
cd /path/to/project/dir
# Move files from Cordova to our build directory
cp -r CordovaLib/build/* build/.
# Build and export
xcodebuild clean -configuration Release -alltargets
xcodebuild -scheme MyScheme archive -archivePath build/MyApp
xcodebuild -exportArchive -exportFormat ipa -archivePath "build/MyApp.xcarchive" -exportPath "MyApp.ipa" -exportProvisioningProfile "MyProvProfile"
Es scheint, dass Schemata in Ihrem Projekt nicht geteilt werden und xcode erstellt sie nach dem Öffnen des Projekts. Sie benötigen gemeinsame Schemas. – Opal
@Opal OK. Wie gehe ich vor, um gemeinsame Schemas einzurichten? –
Siehe hier: https://github.com/facebook/xctool im README-Bereich. – Opal