web-dev-qa-db-fra.com

xcode 5.1: problèmes d'architecture libCordova.a

Hier (3/10/14), lorsque iOS 7.1 est sorti, j'ai également mis à niveau vers Xcode 5.1 et constaté que mon projet PhoneGap/Cordova ne serait plus compilé sur mon iPhone 5s. J'ai également mis à niveau Cordova vers la version la plus récente: v 3.4.0-0.1.3.

J'ai lu de nombreuses solutions différentes sur SO qui concernent des architectures actives en constante évolution et ne construisant que des architectures actives, et aucune d'entre elles ne fonctionne. Voici ce que j'ai essayé et les erreurs que j'ai provoquées. j'ai eu l'erreur:

missing required architecture arm64 in file <long file path omitted> libCordova.a
Undefined symbols for architecture arm64

Alors j'ai essayé ce qui suit. J'ai sélectionné le sous-projet CordovaLib dans mon projet et dans le projet et la cible, je suis allé dans Construire les paramètres sous Architectures et fait en sorte que arm64 n'a été inclus dans aucune des architectures Debug ou Release. À ce stade Construire une architecture active uniquement est défini sur "Oui". Cela a entraîné l'erreur suivante:

file was built for archive which is not the architecture being linked (armv7): 
<long file path omitted> libCordova.a
Undefined symbols for architecture armv7

Si vous définissez uniquement l'architecture active sur "Non", l'erreur devient à nouveau:

missing required architecture arm64 in file <long file path omitted> libCordova.a
Undefined symbols for architecture arm64

Je ne sais pas quoi d'autre essayer. Les paramètres d'architecture du projet incluent uniquement la clé "Base SDK" définie sur iOS 7.1. La cible du projet n'a pas de paramètres d'architectures. Quoi qu'il en soit, je suis à peu près certain que le problème réside dans le sous-projet intégré CordovaLib. Que puis-je faire pour que cette chose soit compilée avec succès sur mon périphérique?

Mise à jour: même problème sur la Jira d’Apache: https://issues.Apache.org/jira/browse/CB-622

80
inorganik

@Shazron a publié le correctif sur Apache JIRA - il note que le correctif sera publié dans le cadre de Cordova 3.5:

  1. Sélectionnez votre icône de projet
  2. Choisissez les paramètres de construction.
  3. Pour "Architectures", sélectionnez $ ARCHS_STANDARD - Architectures standard (armv7, armv7s, arm64)
  4. Pour "Architectures valides", ajouter "arm64"
  5. Sélectionnez votre icône CordovaLib.xcodeproj
  6. Dans les paramètres de construction du projet (pas la cible), supprimez les paramètres de l'architecture conditionnelle (survolez pour voir le signe moins)
  7. Pour "Architectures", sélectionnez $ ARCHS_STANDARD - Architectures standard (armv7, armv7s, arm64)
  8. Pour "Architectures valides", ajouter "arm64"
  9. Allez à 6, mais maintenant faites-le pour "Cible"

Voici un lien vers la description complète de ce problème par Shazron: http://shazronatadobe.wordpress.com/2014/03/12/xcode-5-1-and-cordova-ios/

Il est maintenant publié et la version courte de ce qu'il faut faire est la suivante:

Cordova CLI 3.4.1-0.1.0 est disponible, ce qui inclut Cordova iOS 3.4.1 qui intègre tous les correctifs mentionnés dans cet article de blog. Mettez à jour votre interface de ligne de commande Cordova et, si vous avez un projet existant, effectuez une "ios de mise à jour de la plateforme Cordova".

85
inorganik

Une autre approche qui fonctionne:

  1. Cliquez sur votre projet en haut du navigateur de projet (pas sur le sous-projet Cordova.lib).
  2. Dans le volet de l'éditeur, sélectionnez le projet (pas la cible), sélectionnez l'onglet d'édition Paramètres de construction, puis cliquez sur les boutons Tous et Niveaux.
  3. Développez le groupe Architectures si nécessaire et recherchez la ligne Architectures en dessous.
  4. Les première (résolue) et troisième (iOS valeur par défaut) colonnes de la ligne Architecture indiqueront Standard; la deuxième colonne (projet) sera vide.
  5. Cliquez sur la deuxième colonne vide pour faire apparaître une boîte qui aura une ligne, "$ (ARCHS_STANDARD)".
  6. Double-cliquez sur cette ligne pour la rendre modifiable, puis modifiez-la pour qu'elle se lise "$ (ARCHS_STANDARD_32_BIT)".
  7. Cliquez en dehors de la case pour confirmer votre modification. Maintenant, les première et deuxième cases auront juste un $ en eux.
  8. Maintenant, vous devriez être capable de construire.
11
Neil Faiman

Rétrograder Xcode 5.1 à 5.0.2 a fonctionné pour moi, je ne pouvais pas attendre une version officielle de Cordova 3.5 avec le correctif.

Vous pouvez obtenir une copie de la version précédente ici: https://developer.Apple.com/downloads/index.action

10
AlexLopezIT

Ils viennent de publier une nouvelle version .4.1 qui résout ce problème.

Par conséquent, je mets à jour un seul fichier pour qu'il pointe vers le TAG 3.4.1:

/usr/local/lib/node_modules/cordova/platforms.js

ligne 24 de:

version: '3.4.0'

à:

version: '3.4.1'

Ensuite, vous supprimez le dossier iOS de votre projet et exécutez:

cordova platform add ios

Cela téléchargera le nouveau modèle basé sur 3.4.1 avec tous les correctifs.

8

Suivez les instructions sur cette vidéo: https://www.youtube.com/watch?v=EIkJAKcz8DE

Ajoutez simplement arm64 dans les architectures valides de vos projets et supprimez toute l'architecture conditionnelle du projet Cordova.

5
voyager

J'ai pu créer mon application dans XCode 5.1 en construisant d'abord le projet CordovaLib séparément de XCode, puis en construisant mon projet.

3
Wayferer

Vous devez simplement ajouter l’architecture arm64 à chaque déclaration et à chaque paramètre de bâtiment, je veux dire, à votre projet actuel et au projet Cordova.

Sur votre projet:

  • Des architectures
  • Architectures valides

sur Cordoue:

  • Des architectures
  • déboguer
  • libération
  • N'importe quel SDK

ET LE PLUS IMPORTANT

- Architectures valides dans les paramètres de construction de Cordova

Cette configuration génère de nombreux avertissements, mais il suffit de changer le "% d" pour "% ld" sur toutes les lignes indiquées dans l'avertissement.

2
Felipe Quirós

Saisissez l'icône xcode et faites-la glisser vers le bac!

Allez ici https://developer.Apple.com/downloads/index.action?name=Xcode et téléchargez 5.0.2 et installez-le.

Après l’installation, lancez xcode, puis essayez l’émulateur depuis le terminal.

Travaillé pour moi, ennuyeux cependant!

1
Kevin S