32 votes

Phonegap/Cordova Build error - Apple Mach-O Linker Error : no such file or directory : libCordova.a

J'obtiens une erreur après avoir créé un nouveau projet Cordova 2.1.0 et mis à jour le dossier www avec du code provenant d'une application PhoneGap précédente.

clang: error: no such file or directory: '/Users/peterbanjo/Library/Developer/Xcode/DerivedData/OpuzMobile-bhwawiqfaptmxvfosawfabudgbkj/Build/Products/Debug-iphoneos/libCordova.a'

L'erreur ne se produit que lorsque j'essaie d'exécuter l'application sur un appareil - dans le simulateur, elle fonctionne bien.

J'utilise Xcode 4.5 et iOS6 sur l'iPad cible. J'ai essayé un clean build et libCordova.a apparaît dans l'onglet Build Phases > Link Library With Libraries mais il est en rouge.

43voto

Peter Points 1414

Ce que j'ai trouvé déroutant avec PhoneGap/Cordova 2.1.0 en faisant la mise à jour depuis la 1.4, c'est qu'il y a DEUX projets dans mon application. Il y a MonApplication.xcodeproj et CordovaLib.xcodeproj. Les changements pour résoudre ce problème doivent être appliqués au projet CordovaLib.

  • Changez "Construire l'architecture active seulement" en "OUI".
  • Mettre à jour le fichier texte project.pbxproj à ces valeurs
  • Basculer entre le schéma de construction pour le simulateur et le dispositif (Utiliser le menu de sélection à côté du bouton d'arrêt. D'une manière ou d'une autre, cela semble provoquer la détection des changements).

Cela a-t-il fonctionné pour vous ? J'ai raté quelque chose ?

PS : Pour une meilleure compréhension du problème, regardez ceci Fil du forum Google

7 votes

La modification de "Build Active architecture only" en YES a résolu mon problème. Merci.

4 votes

Le fait de mettre "Build Active Architecture Only" sur Yes a également fonctionné pour moi. Voici capture d'écran de l'endroit où se trouve ce paramètre.

0 votes

@Jonathan - merci d'avoir ajouté la capture d'écran. Il est parfois difficile de se déplacer dans Xcode.

16voto

WootWoot Points 423

J'utilise Cordova/Phonegap 2.9 et cela a résolu mon problème. Je n'ai touché à aucun des éléments de l'archive. Tout est réglé sur armv7 armv7s sur le mien.

Suivez les étapes suivantes pour résoudre ce problème :

  1. Allez dans les paramètres du projet et dans l'onglet "Build".
  2. Recherche pour "Autres drapeaux Linker
  3. Double-cliquez sur les drapeaux de liaison pour Release et changez ${TARGET_BUILD_DIR}/libCordova.a en ${BUILT_PRODUCTS_DIR}/libCordova.a
  4. Faites de même pour Debug Clean et construisez à nouveau l'archive.

2 votes

C'est ça. :) Ça a aidé

3 votes

J'ai essayé de nombreuses techniques différentes et j'ai vu celle-ci mentionnée ailleurs, mais cette fois-ci, non seulement elle m'a semblé logique, mais elle a aussi fonctionné (avec PhoneGap 2.9.0) ! Merci @WootWoot screencast.com/t/PvEQfmogsffd

0 votes

Content que ça vous ait aidé.

3voto

Samuel Points 2645

Il suffit d'enlever armv6 à la fois de YourProject et de CordovaLib : remove armv6 from CordovaLib and do the same for YourProject

Les conséquences d'une telle démarche ? Apparemment, cela fonctionne toujours sur l'iPhone 3GS, mais pas sur les versions précédentes

3voto

Pour le faire fonctionner, j'ai téléchargé à partir de http://connect.apple.com stand alone Xcode 4.4.1. Avec cette version, je peux construire mon application phonegap avec armv6 :)

Oui, dans ce cas, vous devez avoir deux Xcode sur votre ordinateur.

1voto

Theus Points 11

Regardez ça. https://groups.google.com/forum/?fromgroups=#!topic/phonegap/ywoc9wNydZ8

fonctionne pour moi

-- OS X 10.8.2 XCode 4.5 iOS 6.0 PhoneGap 2.1.0

1 votes

Merci pour le lien - je l'ai ajouté. J'ai essayé les étapes dans le forum et elles n'ont pas fonctionné au début, alors j'ai posté la question. J'ai continué à essayer puis, lorsque j'ai compris qu'il y avait deux projets et que j'ai basculé les schémas de construction, l'erreur a disparu. Je pense que j'ai eu du mal parce que je venais d'une version très ancienne de PhoneGap. Mais j'ai posté la réponse au cas où quelqu'un d'autre en aurait besoin - je n'ai pas trouvé de réponse similaire sur Stackoverflow.

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