Xcode 3.2 fournit une nouvelle fonctionnalité impressionnante dans le menu Build, "Build and Archive" qui génère un fichier .ipa adapté à la distribution Ad Hoc. Vous pouvez également ouvrir l'Organiseur, aller dans "Applications archivées" et "Soumettre la demande à iTunesConnect".
Existe-t-il un moyen d'utiliser "Build and Archive" à partir de la ligne de commande (dans le cadre d'un script de build)? Je suppose que xcodebuild
cela serait impliqué d'une manière ou d'une autre, mais la man
page ne semble rien dire à ce sujet.
MISE À JOUR Michael Grinich a demandé des éclaircissements; voici ce que vous ne pouvez pas faire exactement avec les builds en ligne de commande, les fonctionnalités que vous ne pouvez faire qu'avec l'Organisateur de Xcode après avoir "Build and Archive".
- Vous pouvez cliquer sur "Partager l'application ..." pour partager votre IPA avec les bêta-testeurs. Comme le souligne Guillaume ci-dessous, en raison de la magie de Xcode, ce fichier IPA ne nécessite pas de fichier .mobileprovision distribué séparément que les bêta-testeurs doivent installer; c'est magique. Aucun script de ligne de commande ne peut le faire. Par exemple, le script d'Arrix (soumis le 1er mai) ne répond pas à cette exigence.
- Plus important encore, après avoir testé une version bêta, vous pouvez cliquer sur «Soumettre l'application à iTunes Connect» pour soumettre cette même version EXACT à Apple, le très binaire que vous avez testé, sans la reconstruire. C'est impossible depuis la ligne de commande, car la signature de l'application fait partie du processus de génération; vous pouvez signer des bits pour les tests bêta ad hoc OU vous pouvez les signer pour les soumettre à l'App Store, mais pas les deux. Aucun IPA construit sur la ligne de commande ne peut être testé en version bêta sur les téléphones, puis soumis directement à Apple.
J'aimerais que quelqu'un vienne me prouver le contraire: ces deux fonctionnalités fonctionnent très bien dans l'interface graphique Xcode et ne peuvent pas être répliquées à partir de la ligne de commande.
la source
xcodebuild
. La création d'un fichier IPA implique simplement de placer l'application dans un répertoire nommé "Payload", de compresser ce répertoire et de le renommer en MyAppName.ipa.Réponses:
J'ai trouvé comment automatiser le processus de construction et d'archivage à partir de la ligne de commande, je viens d'écrire un article de blog expliquant comment vous pouvez y parvenir.
La commande que vous devez utiliser est
xcrun
:Vous trouverez tous les détails dans l'article . Si vous avez des questions, n'hésitez pas à demander.
la source
RELEASE_BUILDDIR
doit être un chemin absolu.-o "${ipa_path}"
doit être un chemin absolu. Sinon, vous obtiendrez probablementerror: Unable to create '.../...ipa'
ou la création sera ignorée en silence. Merde, ça m'a fait perdre quelques heures.Avec Xcode 4.2, vous pouvez utiliser l'indicateur -scheme pour ce faire:
Après cette commande, l'archive apparaîtra dans l'organisateur Xcode.
la source
archive
action n'honore aucun des paramètres que vous fournissez via cette invocation, à l'exception de l'espace de travail et du schéma - cela m'a juste coûté des heures !xcode-select <path to Xcode.app>
-scheme <SchemeName>
"Archiver
Exportation IPA ( veuillez noter la liste des options d'exportation )
Pour ceux qui ne connaissent pas exportOptions.plist, https://blog.bitrise.io/new-export-options-plist-in-xcode-9
Ceux qui l'utilisaient pour construire un projet dans des outils CI / CD comme teamcity / jenkins, assurez-vous que vous utilisez le bon xcode installé dans l'agent de construction pour l'archivage et l'exportation.
Vous pouvez utiliser l'une des deux options ci-dessous pour cela.
Voici un script de ligne de commande pour créer une archive et un exemple IPA. J'ai un projet iPhone xcode, qui se trouve dans le dossier Desktop / MyiOSApp.
Exécutez les commandes suivantes une par une:
Ceci est testé avec Xcode 5 et fonctionne très bien pour moi.
la source
xcodebuild -workspace <ProjectName>/<ProjectName>.xcworkspace -scheme <schemeName> clean archive -configuration release -sdk iphoneos -archivePath <ProjectName>.xcarchive
requires a provisioning profile with the Associated Domains feature. Select a provisioning profile for the "Release" build configuration in the project editor.
J'ai utilisé mon propre script de génération pour générer le package ipa pour une distribution ad hoc.
Le script incrémente également le numéro de version. Vous pouvez supprimer cette partie si elle n'est pas nécessaire. J'espère que cela aide.
la source
L'
xcodebuild
outil peut créer et exporter des produits d'archives avec l' indicateur -exportArchive (à partir de Xcode 5). L'étape d'exportation n'était auparavant possible que via l'interface utilisateur de Xcode Organizer.Archivez d'abord votre application:
Étant donné
$ARCHIVE_PATH
(le chemin d'accès au fichier .xcarchive ), exportez l'application à partir de l'archive avec l'un des éléments suivants:Fichier .ipa iOS :
Fichier .app Mac :
Dans les deux commandes, les arguments -exportProvisioningProfile et -exportSigningIdentity sont facultatifs.
man xcodebuild
pour plus de détails sur la sémantique. Dans ces exemples, le profil d'approvisionnement pour la version iOS a spécifié un profil d'approvisionnement pour la distribution AdHoc, et l'identité de signature pour l'application Mac a spécifié un ID développeur pour l'exportation en tant qu'application tierce (c'est-à-dire non distribué via le Mac App Store).la source
-workspace
option à xcodebuild (et un chemin d'accès à un espace de travail)?man xcodebuild
déclare: "Pour créer un espace de travail Xcode, vous devez passer les options -workspace et -scheme pour définir la construction".Nous avons développé une application iPad avec XCode 4.2.1 et voulions intégrer la version dans notre intégration continue (Jenkins) pour la distribution OTA. Voici la solution que j'ai trouvée:
Jenkins télécharge ensuite les fichiers ipa, plist et html sur notre serveur Web.
Voici le modèle plist:
Pour configurer cela, vous devez importer le certificat de distribution et le profil d'approvisionnement dans le trousseau de l'utilisateur désigné.
la source
$WORKSPACE
au lieu de$PWD
générerAPP_PATH
J'ai trouvé difficile de démarrer certaines des autres réponses. Cet article l'a fait pour moi. Certains chemins peuvent devoir être absolus, comme mentionné dans les autres réponses.
La commande:
la source
Vous POUVEZ en fait résigner une build, tout comme le fait XCode, afin de pouvoir tester et expédier le même binaire. Par exemple, dans mon script (similaire à ceux ci-dessus), je construis ma version finale signée en tant que build AdHoc, puis je l'archive en tant qu'IPA pour les tests, puis je démissionne avec mon certificat de distribution et crée un fichier zip, ce que j'envoie à Pomme. La ligne pertinente est:
la source
Pour Xcode 7 , vous avez une solution beaucoup plus simple. Le seul travail supplémentaire est que vous devez créer un fichier plist de configuration pour exporter l'archive.
(Par rapport à Xcode 6, dans les résultats de
xcrun xcodebuild -help
,-exportFormat
et les-exportProvisioningProfile
options ne sont plus mentionnées; la première est supprimée et la seconde est remplacée par-exportOptionsPlist
.)Étape 1 , remplacez le répertoire par le dossier contenant le fichier .xcodeproject ou .xcworkspace.
Étape 2 , utilisez Xcode ou
/usr/libexec/PlistBuddy exportOptions.plist
pour créer un fichier plist d'options d'exportation. Soit dit en passant,xcrun xcodebuild -help
vous dira quelles clés vous devez insérer dans le fichier plist.Étape 3 , créez le fichier .xcarchive (dossier, en fait) comme suit (le répertoire build / sera automatiquement créé par Xcode en ce moment),
Étape 4 , exportez en tant que fichier .ipa comme celui-ci, qui diffère de Xcode6
Maintenant, vous obtenez un fichier ipa dans le répertoire build /. Envoyez-le simplement à l'App Store d'Apple.
Soit dit en passant, le fichier ipa créé par Xcode 7 est beaucoup plus volumineux que par Xcode 6.
la source
-scheme
et des-configuration
options spécifient comment signer le fichier ipa.J'ai donné une brève description des étapes à suivre et des paramètres à passer lors de la génération d'un ipa en utilisant terrminal ci-dessous:
Accédez au dossier qui contient le fichier MyApp.xcodeproject dans le terminal
En utilisant la commande donnée ci-dessous, vous obtiendrez toutes les cibles de l'application
Après l'exécution de la commande ci-dessus, vous obtiendrez une liste de cibles dont vous devez sélectionner une cible spécifique dont vous avez besoin pour générer .ipa
La commande ci-dessus crée le projet et crée un fichier .app. Le chemin pour localiser le fichier .app est
./build/Release-iphoneos/MyApp.app
Une fois la construction réussie, exécutez la commande suivante pour générer .ipa de l'application à l'aide du nom du développeur et du profil de provisioning à l'aide de la syntaxe ci-dessous:
Explication de chaque paramètre dans la syntaxe ci-dessus:
la source
Xcode 8:
Format IPA:
Exporte l'archive MyMobileApp.xcarchive en tant que fichier IPA vers le chemin MyMobileApp.ipa à l'aide du profil de provisionnement MyMobileApp Distribution Profile.
Format APP:
Exporte l'archive MyMacApp.xcarchive sous forme de fichier PKG vers le chemin MyMacApp.pkg à l'aide de l'identité d'application signature de cation d'application Developer ID Application: My Team. Le programme d'installation qui signe l'identité Developer ID Installer: My Team est implicitement utilisé pour signer le package exporté.
Page de manuel de Xcodebuild
la source
Accédez au dossier où se trouve la racine de votre projet et:
la source
Pour aller plus loin, télécharger sur iTunesConnect via la ligne de commande avec Xcode 7 ! (En supposant que vous commencez par un
.ipa
qui a été signé avec le profil de version et l'identité de signature corrects.)Entrez
altool
, l'interface CLI pour le chargeur d'application (docs
, page 38). Caché profondément dans la structure de Xcode.app, est une fonction pratique pour nous permettre de télécharger directement sur ItunesConnect.Exécutez simplement
$ altool --upload-app -f file -u username [-p password]
pour télécharger votre nouvellement créé.ipa
directement sur Apple. Le mot de passe est facultatif et vous le demandera si vous le laissez hors de la commande.S'il y a des problèmes avec l'application pendant l'étape de vérification, la console les imprimera.
Vous devrez probablement exporter le chemin vers
altool
si vous ne souhaitez pas enregistrer son emplacement.C'est ça! Connectez-vous simplement à iTunesConnect.com et sélectionnez votre nouvelle version à tester avec testflight.
Remarque finale: Si vous obtenez une erreur indiquant
Exception while launching iTunesTransporter: Transporter not found at path: /usr/local/itms/bin/iTMSTransporter. You should reinstall the application
, vous pouvez suivre la suggestion de cette réponse SO , pour exécuter un lien symbolique vers l'emplacement correct:la source
Pour améliorer la réponse de Vincent, j'ai écrit un script pour cela:
xcodearchive
il vous permet d'archiver (générer une ipa) votre projet via la ligne de commande. Pensez-y comme la sœur de la
xcodebuild
commande, mais pour l'archivage.Le code est disponible sur github: http://github.com/gcerquant/xcodearchive
Une option du script consiste à activer l'archivage des symboles dSYM dans une archive horodatée. Aucune excuse pour ne plus conserver les symboles et ne pas pouvoir symboliser le journal des plantages que vous pourriez recevoir plus tard.
la source
Comment construire un projet iOS avec une commande?
&&
&&
Qu'est-ce que ExportOptions.plist?
ExportOptions.plist est requis dans Xcode. Il vous permet de spécifier certaines options lorsque vous créez un fichier ipa. Vous pouvez sélectionner les options dans une interface utilisateur conviviale lorsque vous utilisez Xcode pour archiver votre application.
Important : La méthode de publication et de développement est différente dans l' AppStore ExportOptions.plist
:
Développement
la source
essayez xctool, c'est un remplacement pour xcodebuild d'Apple qui facilite la construction et le test des produits iOS et Mac. C'est particulièrement utile pour une intégration continue. Il a quelques fonctionnalités supplémentaires:
Le n ° 3 est extrêmement utile. Je ne sais pas si quelqu'un peut lire la sortie de la console de xcodebuild, je ne peux pas, généralement cela m'a donné une ligne avec plus de 5000 caractères. Encore plus difficile à lire qu'un mémoire de thèse.
xctool: https://github.com/facebook/xctool
la source
si vous utilisez l'outil suivant: https://github.com/nomad/shenzhen
alors cette tâche est très simple:
la source
la source
Après la mise à jour vers Xcode 8, j'ai trouvé que l'IPA d'entreprise était générée par
Je passe donc à
xcodebuild -exportArchive
et tout redevient normal.la source
Vous voulez dire les options valider / partager / soumettre? Je pense que ceux-ci sont spécifiques à Xcode et ne conviennent pas à un outil de construction en ligne de commande.
Avec un peu d'habileté, je parie que vous pourriez faire un script pour le faire pour vous. On dirait qu'ils sont juste stockés dans
~/Library/MobileDevice/Archived Applications/
avec un UUDI et un plist. Je ne peux pas imaginer qu'il serait aussi difficile de faire de l'ingénierie inverse du validateur.Le processus qui m'intéresse d'automatiser est d'envoyer des versions aux bêta-testeurs. (Étant donné que la soumission sur l'App Store se produit rarement, cela ne me dérange pas de le faire manuellement, d'autant plus que j'ai souvent besoin d'ajouter un nouveau texte de description.) En faisant une pseudo Build + Archive à l'aide de la CLI de Xcode, je peux déclencher des builds automatiques à partir de chaque validation de code, créez des fichiers IPA avec des profils de provisionnement intégrés et envoyez-les par e-mail aux testeurs.
la source
xcodebuild
et crée une IPA.