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
@Shazron a publié le correctif sur Apache JIRA - il note que le correctif sera publié dans le cadre de Cordova 3.5:
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".
Une autre approche qui fonctionne:
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
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.
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.
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.
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:
sur Cordoue:
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.
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!