J'ai un serveur Jenkins pour un projet iOS de construction automatique qui a deux cibles . Le projet est construit avec l'utilitaire de ligne de commande xcodebuild
.
Les commandes complètes sont
/usr/bin/xcodebuild -workspace "Notre projet.xcworkspace" -scheme "Première cible" -configuration Release archiver DEVELOPMENT_TEAM = TEAMCODE -allowProvisioningUpdates
et
/usr/bin/xcodebuild -workspace "Notre projet.xcworkspace" -scheme "Deuxième cible" -configuration Release archiver DEVELOPMENT_TEAM = TEAMCODE -allowProvisioningUpdates
Avant de mettre à jour Xcode vers la version 10, cela fonctionnait parfaitement. Mais après avoir mis à jour chaque fois que je vois une erreur
error: Fabric: Erreur Info.plist
Impossible de traiter Info.plist à l’emplacement /Users/Shared/Jenkins/Library/Developer/Xcode/DerivedData/Our_project-xxxx/Build/Intermediates.noindex/ArchiveIntermediates/Our_project-xxxx/Bur/Intermediates.noindex/ArchiveIntermediates/Our project/BuildProductsPath/Release-iphoneos/First adin .pliste Cela pourrait être un problème de synchronisation. Assurez-vous que la phase de construction du script d'exécution Fabric est la dernière phase de construction et qu'aucun autre script n'a été déplacé. Notre application.app à partir de l'emplacement Xcode l'a générée. Vous pouvez également ajouter '$ (BUILT_PRODUCTS_DIR)/$ (INFOPLIST_PATH)' en tant que dépendance "Fichiers d'entrée" pour votre phase de construction du script d'exécution Fabric.
** ÉCHEC ARCHIVE **
Après avoir googlé et lu la description de l'erreur, j'ai ouvert l'onglet Build phases
dans Xcode et l'ai configuré (déplacez l'élément Run script
en bas, cochez Run script only when installing
et ajoutez $(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
aux fichiers d'entrée et supprimez également l'élément Run script
vide).
La génération manuelle à partir de la ligne de commande fonctionne maintenant - il semble que le problème soit résolu. Même Jenkins a construit la première cible! Mais secong cible n'a pas avec la même erreur.
J'ai ouvert le projet, regardé l'onglet Étapes de construction et j'ai vu que l'élément Run script
avait été déplacé au-dessus et qu'un nouveau Run script
vide était apparu . Après cela, j'ai expérimenté: configurer des phases de construction, reconstruire le projet dans l'interface graphique Xcode et voir que les phases étaient à nouveau commandées. Donc, cela se produit pendant ou après la construction.
Comment puis-je résoudre ce bug?
Peut-on commander les phases de construction manuellement depuis la ligne de commande? Si oui, je viens d'ajouter une ligne dans l'étape de Jenkins.
De plus, cette erreur n'apparaît que dans la génération de ligne de commande. Lorsque je construis un projet à partir de l'interface graphique Xcode, il réussit toujours.
J'ai trouvé une solution de type béquille: sélectionnez Legacy Build System
dans File
-> Workspace Settings
-> Build System
dans l'interface graphique Xcode.
Pourquoi est-ce une mauvaise solution? En raison de:
Legacy Build System
est plus lent que New Build System (Default)
.
Ce n'est pas un paramètre Xcode mais un espace de travail. C'est à dire. Après le nettoyage du dossier de l’espace de travail dans Jenkins ou certaines actions du système de contrôle de version, ce paramètre sera réinitialisé sur la valeur par défaut et une option inopérante sera sélectionnée à nouveau.
Solution pour terminer la configuration de Crashlytics et/ou Fabric en utilisant les éléments suivants: 1. Allez dans Paramètres de construction 2. Recherchez "Format des informations de débogage" 3. Modifiez la valeur de "Debug" de "DWARF" en "DWARF with dSYM File" 4. Construisez votre projet à nouveau.
Changer "DWARF" Vérifier l’image
Pour "DWARF with dSYM File" Vérifier l'image