web-dev-qa-db-fra.com

Le fichier est universel (trois tranches), mais il ne contient pas l'erreur de tranche a(n) _ ARMv7-s pour les bibliothèques statiques sur iOS, à contourner quand même?

J'ai mis à jour la version Xcode et lors de l'utilisation de bibliothèques statiques externes, le message suivant s'affiche:

ld: le fichier est universel (3 tranches) mais ne contient pas a(n) tranche d'armv7s:/fichier/emplacement pour l'architecture armv7s clang: erreur: la commande de l'éditeur de liens a échoué avec le code de sortie 1 (utilisez -v pour voir invocation)

Existe-t-il un moyen de contourner ce problème et d'ajouter un support à la bibliothèque si le développeur de la bibliothèque n'a pas encore mis à jour sa bibliothèque?

403
Dafna Elazazer

Si vous souhaitez supprimer le support de n'importe quelle architecture, par exemple, ARMv7-s dans votre cas, utilisez le menu Project - > Configurer les paramètres -> supprimer l'architecture des "architectures valides".

Vous pouvez l'utiliser comme solution temporaire jusqu'à la mise à jour de la bibliothèque. Vous devez supprimer l'architecture de votre projet principal, pas de la bibliothèque.

Vous pouvez également définir l'indicateur pour "Construire l'architecture active uniquement" de votre configuration de débogage sur Oui. Laissez la configuration de la version finale "Construire uniquement une architecture active" sur Non, afin que vous puissiez recevoir un rappel avant la publication indiquant que vous devez mettre à niveau les bibliothèques tierces que vous utilisez.

418
Nicholas

J'ai simplement basculé "Construire l'architecture active uniquement" sur "Oui" dans les paramètres de construction de la cible, et c'est OK maintenant!

191
Blasco73

Essayez de supprimer armv7s de "l'architecture valide" du projet pour vous libérer de ce problème pour le téléphone iOS 5.1.

27
Arthur Jen

Je viens de poster un correctif ici qui s'appliquerait également dans ce cas. En gros, vous effectuez une recherche hexagonale dans votre bibliothèque externe pour lui faire croire que c'est du code ARMv7. Vous devriez pouvoir utiliser lipo pour le diviser en 3 bibliothèques statiques, dupliquer/modifier le fichier ARMv7, puis utiliser à nouveau lipo pour assembler une nouvelle bibliothèque pour les 4 architectures.

13
Ertebolle

Support Flurry pour iPhone 5 (ARMv7) Comme je l’ai mentionné dans le message d’hier, Flurry a commencé à travailler sur une version du SDK iOS pour prendre en charge le processeur ARMv7 du nouvel iPhone 5 immédiatement après son annonce mercredi.

Je suis heureux de vous dire que le travail est terminé et que le SDK est maintenant disponible sur le site.

5
RAZ

utilisez le menu Projet -> Paramètres de construction ->

puis supprimez armv7s des "architectures valides". Si standard a été choisi, supprimez-le puis ajoutez armv7.

4
Panky

Dans le cas où cela arrive à quelqu'un. J'ai construit ma propre bibliothèque à utiliser avec un code tiers. Alors que je le construisais pour le livrer, j'ai accidentellement laissé mon iPhone 4S branché. Xcode n'a donc construit ma bibliothèque que pour l'architecture branchée au lieu de suivre les paramètres du projet. Supprimez tous les périphériques branchés et reconstruisez la bibliothèque, reliez-la et tout devrait bien se passer.

J'espère que ça aide.

1
Raphael Ayres

Dans mon cas, je me connectais à une bibliothèque tierce un peu ancienne (développée pour iOS 6, sur XCode 5/iOS 7). Par conséquent, je devais mettre à jour la bibliothèque tierce, effectuer un nettoyage et une construction, et elle se construit maintenant avec succès.

0
Jay Imerman