403 votes

Le fichier est universel (trois tranches), mais il ne contient pas une (n) erreur de tranche ARMv7-s pour les bibliothèques statiques sur iOS, comment la contourner ?

Je me suis amélioré Xcode et lorsque j'utilise des bibliothèques statiques externes, j'obtiens ce message :

ld : le fichier est universel (3 tranches) mais ne contient pas une (n) tranche armv7s : /file/location pour l'architecture armv7s clang : error : linker command failed with exit code 1 (use -v to see 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 ?

0 votes

Cela semble être une bonne solution pour le moment. galloway.me.uk/2012/09/hacking-up-an-armv7s-library (en anglais)

418voto

Nicholas Points 4491

Si vous souhaitez supprimer la prise en charge d'une architecture, par exemple, ARMv7-s dans votre cas, utilisez le menu Projet -> Paramètres de construction -> supprimer l'architecture de "architectures valides".

Vous pouvez l'utiliser comme solution temporaire jusqu'à ce que la bibliothèque ait été mise à jour. Vous devez supprimer l'architecture de votre projet principal, et non de la bibliothèque.

Vous pouvez également définir l'indicateur de votre configuration de débogage "Build Active Architecture Only" sur Yes. Laissez l'option "Build Active Architecture Only" de la configuration de publication sur Non, pour vous rappeler, avant la publication, que vous devez mettre à jour les bibliothèques tierces que vous utilisez.

0 votes

Bonne solution mais y a-t-il un moyen d'ajouter le support sans compiler la bibliothèque ?

11 votes

Vous n'avez pas besoin de recompiler la bibliothèque. vous pouvez enlever ce drapeau du projet qui utilise la bibliothèque.

0 votes

Je suppose que l'application ne fonctionnera pas sur l'iPhone 5, n'est-ce pas ?

191voto

Blasco73 Points 1991

J'ai simplement basculé l'option "Build Active Architecture Only" sur "Yes" dans les paramètres de construction de la cible, et c'est bon maintenant !

1 votes

@Blasco73 Est-ce que tu sais au moins que tu es génial ? Vous devriez. Voilà, vous, monsieur, êtes génial !

15 votes

Comment cela peut-il être une bonne solution ? Elle supprime l'erreur, mais vous n'obtenez que les builds pour l'archive actuelle, pas toutes celles du marché...

27voto

Arthur Jen Points 241

Essayez de supprimer armv7s de l'architecture valide du projet afin de résoudre ce problème pour les téléphones iOS 5.1.

13voto

Ertebolle Points 1754

Je viens de poster un correctif aquí qui s'appliquerait également dans ce cas - en gros, vous effectuez une recherche et un remplacement d'hexagones dans votre bibliothèque externe pour lui faire croire qu'il s'agit de code ARMv7s. Vous devriez être en mesure d'utiliser lipo pour la décomposer en 3 bibliothèques statiques, dupliquer / modifier celle d'ARMv7, puis utiliser lipo à nouveau pour assembler une nouvelle bibliothèque pour les 4 architectures.

5voto

RAZ Points 307

Support de Flurry pour l'iPhone 5 (ARMv7s) Comme je l'ai mentionné dans le post d'hier, Flurry a commencé à travailler sur une version du SDK iOS pour supporter le processeur ARMv7s dans le nouvel iPhone 5 immédiatement après l'annonce de mercredi.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X