J'ai un problème pour générer une archive d'application iOS à partir d'une application. L'application se compile très bien et fonctionne même dans le simulateur. Maintenant, je voulais faire des tests ad hoc et je ne peux pas générer l'archive d'application iOS. Lorsque je clique sur le produit -> Archive, cela génère une archive xcode générique. Quelqu'un peut-il m'aider. Je dois mentionner que j'ai déjà généré une archive d'application iOS de cette application. Il vient de s'arrêter pour générer une archive iOS pour une raison quelconque. Merci beaucoup.
175
xcodebuild
. La solution est de spécifier la destination:xcodebuild -destination generic/platform=iOS
Réponses:
Vérifiez les paramètres de construction:
la source
/usr/local/include
. Si vous construisez une bibliothèque statique, les en-têtes doivent être publics, il est donc plus correct si # 3 est de changer le chemin du dossier des en-têtes publics en quelque chose de plus sensé commeinclude/$(TARGET_NAME)
. @CopperCash le note dans une réponse ci-dessous.Cela peut se produire si vous avez ajouté un framework / bibliothèque ... vous devez modifier les paramètres Target-> Build de cette bibliothèque et définir le paramètre «Ignorer l'installation» sur «Oui». Lorsque vous réarchivez, XCode devrait recommencer à produire une «archive d'application iOS» plutôt qu'une «archive xcode générique».
la source
En plus de Ignorer l'installation sur Oui et au cas où vous ouvririez un autre projet lib / framwork dans votre projet d'application, vous devez déplacer les en-têtes (le cas échéant) de public vers le projet dans la phase de construction / les en- têtes de copie .
la source
J'ai fait ce qui suit pour que cela fonctionne pour moi:
Absolute path
àproducts directory
. Remarque: consultez l'indice ci-dessous pour affiner votre recherche afin de trouver la bibliothèque à l'origine de cette erreur.et c'était tout!
astuce: pour avoir une idée des fichiers incriminés qui amènent votre archive à créer un fichier d'archive plutôt qu'un ipa, procédez comme suit:
usr/local/include
, identifiera les fichiers d'en-tête coupables que vous devez déplacer de Public vers Project ou les fichiers que vous devez modifier du chemin absolu vers le répertoire des produits (ou même les fichiers que vous avez oubliés de définir l'option Ignorer l'installation sur oui). mais ce répertoire (c'est-à-dire usr / local / include) varie en fonction de la structure de votre sous-bibliothèque. Dans de nombreux cas .. vous verrez tous les fichiers répertoriés sous Copier les fichiers à l'étape 3 ci-dessus répertoriés ici. Si vous les trouvez ici, vous avez une réponse définitive à la cause de votre problème.update to hint: pour rendre la vie encore plus simple .. quels que soient les fichiers qui apparaissent à l'étape 4 dans l' astuce ci-dessus .. recherchez-le simplement dans la recherche globale de xcode .. et vous devriez obtenir des résultats immédiats pour ce que vous voulez .. par exemple, c'était le contenu de mon dossier (en suivant les étapes de l'indice ci-dessus):
Je pourrais donc dire que cela a quelque chose à voir avec les bibliothèques crypto et ssl ... les chercher:
m'a fait réaliser que j'avais oublié de définir skip install sur yes.
la source
./usr/local/include
.Si vous exportez l'archive, ouvrez-la et voyez
/urs/local/include
dans Produits, essayez cette suggestion :J'ai travaillé pour moi après la mise à niveau de mon application React Native vers
0.11.0
Xcode7
et CocoaPods0.39.0.beta.4
.la source
Si vous utilisez CocoaPods ainsi que WatchKit ou une extension Today, il y a un problème ouvert sur le repo CocoaPods expliquant quel pourrait être votre problème.
La solution pour moi était de supprimer la
Copy Pod Resources
phase des cibles WatchKit Extension et Today Extension sousBuild Phases
. Le projet a été compilé et archivé comme prévu une fois que j'ai fait cela.J'espère que cela aide quelqu'un, cela m'a laissé perplexe pendant une journée entière!
la source
Si l'une des réponses ci-dessus ne fonctionne pas, votre problème vient probablement de
cocoaPods
. La dernière mise à jour a0.38.1
gâché les choses pour moi, mais j'ai ensuite rétrogradé0.37.1
et les choses sont revenues à la normale. En utilisantXcode 6.3.1
Modification ultérieure: la mise à jour vers
0.38.2
corrigera également ce problème. Plus d'informations sur la cause de ce problème ici: Cocoapods 0.38.1 n'a pas réussi à créer une archive validela source
0.38.2
et j'ai toujours des problèmes. Êtes-vous sur Xcode 7?/Library/Frameworks
. Je pense que cela peut avoir quelque chose à voir avec le fait que les cabosses de cacao de Google ne sont pas construites en tant que cadre dynamique. Cela ressemble à github.com/CocoaPods/CocoaPods/issues/3889Bien que j'utilise Xcode5 et que ce qui l'a trié pour moi, c'était la modification du schéma de construction - essayer toutes les suggestions ci-dessus qui étaient applicables n'a pas aidé dans mon cas.
J'avais deux cibles, disons, "App" et "App GRATUIT". Mes problèmes avec l'archive générique sont survenus lorsque j'essayais d'archiver la version GRATUITE, que j'ai ajoutée après la version «normale» de l'application. Dans mon cas, lorsque j'ai sélectionné son schéma dans la barre d'outils et choisi Edit Scheme ... j'ai vu que la section Build avait deux cibles, à savoir App et App FREE.
J'ai décoché toutes les colonnes pour App, ne laissant que les colonnes App FREE cochées, et j'ai cliqué sur OK. La prochaine fois que j'ai choisi Produit> Archive, j'ai obtenu mon application GRATUITE au lieu d'une archive générique. :)
la source
Si vous n'avez qu'un seul projet, cette solution serait peut-être utile. Ce problème était survenu lorsque j'ai dupliqué la cible. En conséquence, j'ai fait construire deux cibles en parallèle. Cela causait le problème. L'archive IOS générique a été créée.
Pour désactiver le parallèle construit, allez à
la source
J'ai eu ce problème après la mise à jour vers iOS 9 et Xcode 7. La solution de Josh H a fonctionné pour moi:
J'ai également créé un script de post-installation pour mon Podfile pour le faire automatiquement!
Ajoutez-le simplement au bas de votre Podfile et exécutez
pod install
la source
J'ai plusieurs projets dans mon espace de travail (GTL, Pods et mon projet principal) et c'est ce qui a fonctionné pour moi:
Sélectionnez le projet, il y aura 2 types là-bas, il y a le projet et il y a les cibles .
Pour les projets qui ne sont pas vos principaux goûts
GTL
ouPODS
:Projets:
Objectifs:
Pour le projet principal (qui porte généralement le même nom que le nom de votre produit):
Projets:
Objectifs:
Vérifiez la cible de déploiement ios sur chaque projet et cible pour vous assurer qu'ils sont tous identiques.
la source
J'ai eu ce problème. Dans mon cas, cela a été causé par le maintien d'une cible d'application Mac en tant que dépendance de l'application iOS.
La raison pour laquelle il a été configuré de cette manière était que l'application Mac était un outil utilisé pour générer des données pour l'application iOS, qui était ensuite incluse dans le bundle.
J'ai dû supprimer cette dépendance et créer l'outil séparément avant de créer une version de l'application iOS elle-même.
la source
Dans mon scénario, j'obtenais l'erreur "Generic Archive" seulement après avoir commencé à inclure du code Swift dans mon projet à prédominance Objective-C. Après beaucoup de dépannage et d'examen du fichier d'archive que Xcode crachait, j'ai remarqué que le
SwiftSupport
dossier (avec les dylibs requis pour l'exécution Swift) se trouvait à un endroit différent dans mes archives que dans une toute nouvelle archive d'application de projet Swift à la vanille. .J'ai trouvé le
Installation Directory
paramètre de construction et j'ai remarqué qu'il était défini sur un chemin personnalisé dans mon projet. Je l'ai simplement supprimé (en le définissant sur sa valeur générique de/Applications
) et le prochain Build -> Archive que j'ai fait a fonctionné comme prévu et m'a donné une archive d'application iOS appropriée.TL; DR: assurez-vous que votre
Installation Directory
paramètre de construction est défini sur sa valeur par défaut/Applications
lors de l'inclusion du code Swift dans votre application, en particulier si vous commencez avec un fichier de projet plus ancien qui peut avoir des paramètres de construction hérités inattendus.la source
Laisser cela ici pour sauver les autres du même voyage.
J'ai trouvé que je devais également supprimer la même phase de création de Copy Pod Resources d'une cible de bibliothèque statique dans mon espace de travail.
la source
Ajout à la réponse d'Alex L.
Point 3. Changez "Build Settings" -> "Public Header Folder Path" en "include / xxx" fonctionne également.
la source
Si rien de ce qui précède ne vous a aidé ... après beaucoup de temps .......
J'ai supprimé la valeur dans le fichier Info.plist pour la version Bundle parce que j'étais assez content avec juste Bundle Version Short 1.0.Mauvais. Ne fais pas ça.
* Notez que j'ai fait cela en l'éditant dans l'interface utilisateur sur la droite sans réaliser que cela mettrait une clé vide dans le fichier Info.plist. Je pense que cela le rend invalide. Mon bundle est apparu comme d'autres éléments lors de l'archivage et n'avait pas d'icône, et je ne pouvais pas télécharger n'importe où.
Cela se résume à des valeurs invalides dans Info.plist. Si ce n'est pas une archive valide, essayez de décompresser une ancienne archive et de déposer / écraser votre archive actuelle et voyez si elle le corrige lors de la reconstruction de l'archive.
la source
Accédez aux paramètres de construction et ajoutez
yourAppName / Resources / dist.plist aux droits de signature de code
Appuyez sur cmd + B avec un appareil iOS ou un appareil réel sélectionné comme cible de construction
Une fois terminé -> faites défiler jusqu'au dossier "Produits" et faites un clic droit sur votreAppName.app
Choisissez "Afficher dans le Finder"
Créez un dossier avec Nom Payload ( majuscule "P" )
Copiez yourAppName dans votre dossier Payload
Créez un zip à partir de votre dossier Payload
Renommez le zip en yourAppName.ipa
TERMINÉ
la source
Après avoir essayé à peu près tout:
J'ai alors remarqué que ma partition de démarrage était `` faible sur l'espace disque libre '' ... environ 1 Go environ. J'ai redémarré, puis j'ai obtenu environ 18 Go de libre.
Ensuite, j'ai ouvert Xcode et le projet, exécuté Archive ... et étonnamment (après une heure à essayer de créer une archive), j'ai finalement obtenu une archive non générique.
Aucune idée si c'est un problème de disque libre qui l'a résolu ou un redémarrage du macOS qui l'a corrigé, mais cela a fonctionné pour moi.
la source
Si vous avez des fichiers .xcodeproj dans Projet> Cibles> Phases de construction> dépendances cibles, supprimez-le de là, puis créez votre ipa. Ça marche pour moi. À votre santé
Vous pouvez obtenir une réponse ici: xcode crée une archive xcode générique au lieu de iOS App Archive
la source
Dans mon cas, j'ai dû déplacer FMDB et BlocksKit vers des bibliothèques statiques. Auparavant, ils étaient construits en tant que sous-projets. N'oubliez pas que vous pouvez utiliser lipo pour créer des bibliothèques universelles. Lors de la construction des produits finaux, le code du simulateur sera supprimé automatiquement.
la source
Une autre raison possible est d'avoir des références dans «Dépendances cibles» à des projets pour une plate-forme différente. Dans mon cas particulier, je travaillais sur un projet qui partage du code pour OSX et iOS. Dans l'une des cibles iOS, j'avais accidentellement ajouté une cible OSX en tant que dépendance.
la source
Afin d'être minutieux, je publie ma solution.
J'ai rencontré exactement le même problème en essayant de créer une archive d'un projet iOS dans Xcode 5.1.1 (5B1008). Aucune des suggestions ci-dessus n'a résolu le problème, et la plupart d'entre elles n'étaient pas pertinentes (je n'avais ajouté aucun cadre et je n'avais aucune entrée publique dans la section Copier les en-têtes de mes phases de construction).
Dans mon cas, résoudre le problème consistait simplement à fermer mon projet, à supprimer toutes les archives que j'avais précédemment créées, à aller dans Préférences> Comptes, à supprimer mon compte développeur, à quitter Xcode, à relancer, à rajouter mon compte développeur, à démarrer le processus d'archivage encore. Cela a résolu mon problème immédiatement.
la source
Encore une solution, car tout ce qui précède n'a pas fonctionné pour moi ...
Changé le
User Header Search Paths
(je supposeHeader Search Paths
cela fonctionnerait tout aussi élégamment) en"$(BUILT_PRODUCTS_DIR)/BlocksKit"
.Contexte :
Dans BlockKit, les développeurs ont structuré les en-têtes du projet principal différemment de la structure lors du déploiement. Ainsi, vous ne pouvez pas référencer les en-têtes dans le projet et devez référencer les en-têtes copiés dans le répertoire de construction.
la source
La façon dont cela fonctionnait pour moi dans (Xcode 5) j'avais 2 cibles et quand j'ai édité le schéma, dans le volet gauche de l'éditeur de schéma, vous verrez le [BUILD, RUN, TEST, PROFILE XXX.APP, ANALYZE, ARCHIVE ] dans le volet BUILD, vous verrez les cibles de votre projet répertoriées dans une liste. À l'extrême droite, vous verrez les sélections ARCHIVE, assurez-vous qu'une seule cible est sélectionnée pour l'archivage.
J'avais sélectionné 2 de mes cibles dans mon projet, je n'ai coché que la cible que je voulais dans le produit, et cela a fonctionné!
la source
J'ai résolu cette erreur en ouvrant uniquement le projet d'application dans XCode, c'est-à-dire. ne pas ouvrir un espace de travail comprenant l'application et d'autres projets / bibliothèques / frameworks.
Ayant 2 projets séparés, un framework ou une bibliothèque partagée et une application iOS, j'ai dû ouvrir 2 fenêtres XCode différentes, chacune en ouvrant directement le fichier .xcodeproj au lieu du .xcworkspace commun , afin de construire préalablement chacune.
En tant qu'effet secondaire intéressant, XCode ne reconstruit plus chaque cible de chaque projet après avoir effectué un nettoyage , ce qui réduit les temps de construction.
Contexte: je crée un SDK open source et une application iOS de démonstration. J'avais tous les deux ouvert dans un seul espace de travail. Définir Ignorer l'installation sur OUI sur les cibles du SDK empêcherait quiconque de créer une archive, car elle serait vide, ce n'était donc pas une option. L'utilisation de Project au lieu d' en- têtes publics conduirait à une archive manquant des fichiers d'en-tête qui devraient être distribués, ce n'était donc pas non plus une option.
la source
Car c'était parce que je travaillais dans un espace de travail. Le projet a bien été archivé mais ne serait pas affiché dans la fenêtre de l'organiseur. J'ai fermé l'espace de travail et ouvert le projet tout seul. L'archive a été ouverte dans l'organisateur ... j'espère que cela vous aidera.
la source
Dans mon cas, j'avais un script personnalisé qui copiait des fichiers temporaires dans:
Cela signifiait qu'après avoir étudié l'archive pour inspecter son contenu, j'ai trouvé juste à côté du fichier .app un dossier myTempDir. Une fois que j'ai modifié le script pour enregistrer ailleurs, les choses ont été triées.
la source
Essayez de définir les en-têtes $ (PROJECT_NAME) dans le chemin du dossier des en-têtes publics du projet Framework. Vous devez accéder aux paramètres de construction de la cible de la bibliothèque, puis modifier le chemin du dossier des en-têtes publics en tant qu'en-têtes $ (PROJECT_NAME).
la source
Si vous utilisez Xcode 7 avec des cocoapodes v.0.38.2 . Essayez de supprimer
copy pod resources
de votre cible d'extension d'aujourd'hui.la source
J'ai rencontré ce problème après avoir ajouté un outil de ligne de commande OS X au projet de mon application iOS, et Ignorer l'installation a été défini sur NON par défaut pour la cible de l'outil de ligne de commande. Étant donné que vous ne pouvez évidemment pas installer un binaire OS X sur un appareil iOS, l'archivage par défaut est une archive Xcode générique. La définition de Skip Install sur YES pour cette cible a résolu le problème.
la source