Подтвердить что ты не робот

Xcode 5 и phonegap: ошибки компоновщика при построении для устройства, но не для симулятора

Приложение phonegap отлично подходит для симулятора iphone, но генерирует ошибки компоновщика при создании приложения на iphone. единственное, что изменилось, это установка testflight и тестового приложения.

Мы уже удалили testflight и тестовое приложение, но ошибки компоновщика остались.

Любые идеи о том, как исправить это?

Мы находимся на xcode 5 и телефонной таблице 3.4.

Ошибки:

ld: warning: ignoring file /Users/c/Library/Developer/Xcode/DerivedData/s-fhgxmhdprdjvwahdbgwuagoragit/Build/Products/Debug-iphoneos/libCordova.a, file was built for archive which is not the architecture being linked (arm64): /Users/c/Library/Developer/Xcode/DerivedData/s-fhgxmhdprdjvwahdbgwuagoragit/Build/Products/Debug-iphoneos/libCordova.a
Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_CDVWebViewDelegate", referenced from:
      objc-class-ref in CDVInAppBrowser.o
  "_OBJC_METACLASS_$_CDVViewController", referenced from:
      _OBJC_METACLASS_$_MainViewController in MainViewController.o
  "_OBJC_CLASS_$_CDVPlugin", referenced from:
      _OBJC_CLASS_$_CDVDevice in CDVDevice.o
      _OBJC_CLASS_$_CDVConnection in CDVConnection.o
      _OBJC_CLASS_$_LowLatencyAudio in LowLatencyAudio.o
      _OBJC_CLASS_$_CDVLogger in CDVLogger.o
      _OBJC_CLASS_$_CDVInAppBrowser in CDVInAppBrowser.o
      _OBJC_CLASS_$_InAppPurchase in InAppPurchase.o
  "_OBJC_METACLASS_$_CDVPlugin", referenced from:
      _OBJC_METACLASS_$_CDVDevice in CDVDevice.o
      _OBJC_METACLASS_$_CDVConnection in CDVConnection.o
      _OBJC_METACLASS_$_LowLatencyAudio in LowLatencyAudio.o
      _OBJC_METACLASS_$_CDVLogger in CDVLogger.o
      _OBJC_METACLASS_$_CDVInAppBrowser in CDVInAppBrowser.o
      _OBJC_METACLASS_$_InAppPurchase in InAppPurchase.o
  "_OBJC_CLASS_$_CDVViewController", referenced from:
      _OBJC_CLASS_$_MainViewController in MainViewController.o
      objc-class-ref in CDVDevice.o
  "_CDVLocalNotification", referenced from:
      -[AppDelegate application:didReceiveLocalNotification:] in AppDelegate.o
  "_OBJC_METACLASS_$_CDVCommandDelegateImpl", referenced from:
      _OBJC_METACLASS_$_MainCommandDelegate in MainViewController.o
  "_OBJC_CLASS_$_CDVPluginResult", referenced from:
      objc-class-ref in CDVDevice.o
      objc-class-ref in CDVConnection.o
      objc-class-ref in LowLatencyAudio.o
      objc-class-ref in CDVInAppBrowser.o
      objc-class-ref in InAppPurchase.o
  "_OBJC_CLASS_$_CDVCommandDelegateImpl", referenced from:
      _OBJC_CLASS_$_MainCommandDelegate in MainViewController.o
  "_OBJC_CLASS_$_CDVUserAgentUtil", referenced from:
      objc-class-ref in CDVInAppBrowser.o
  "_OBJC_CLASS_$_CDVCommandQueue", referenced from:
      _OBJC_CLASS_$_MainCommandQueue in MainViewController.o
  "_OBJC_METACLASS_$_CDVCommandQueue", referenced from:
      _OBJC_METACLASS_$_MainCommandQueue in MainViewController.o
  "_CDVPluginHandleOpenURLNotification", referenced from:
      -[AppDelegate application:handleOpenURL:] in AppDelegate.o
      -[CDVInAppBrowser openInSystem:] in CDVInAppBrowser.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
4b9b3361

Ответ 1

похоже, что мы также непреднамеренно обновили до xcode 5.1, что вызвало проблему. phonegap 3.4 и xcode 5.1 несовместимы, если вы не внесете некоторые изменения.

вот решение: http://shazronatadobe.wordpress.com/2014/03/12/xcode-5-1-and-cordova-ios/

Ответ 2

Такие проблемы возникают при обновлении Xcode, но любой сторонний инструмент, который вы используете, не может быть обновлен с помощью этой архитектуры armv64.

Итак, нажмите на свой Навигатор проектов с XCode.

Нажмите "Вкл. BuildSettings на нем.

Найдите Valid Architectures в нем.

Просто дважды щелкните по нему и удалите armv64.

Убедитесь, что есть только armv7 и armv7s.

В моем случае это сработало для меня.

Очистите и создайте свой проект. Теперь он должен работать нормально.

Надеюсь, это поможет вам.

ИЗМЕНИТЬ

Теперь, с 1 февраля 2015 года, яблоко не разрешит приложения без архитектуры arm64.

Поэтому убедитесь, что все приложения представлены поддержкой arm64.

Ответ 3

Извините, если это может показаться банальным ответом, но следующие шаги обычно я делаю, когда вижу ошибки компоновщика:

  • Убедитесь, что ваш код обновлен, со всеми последними исправлениями и версиями.
  • Убедитесь, что вы обновили свои подмодули. В git: git submodule update --init --recursive
  • Сделайте чистую папку для сборки. Перейдите в раздел "Продукт", "Наведите указатель мыши" на "Очистить" и нажмите вместе (Command + Option) и нажмите "Очистить папку сборки".

Промыть и повторить.

Если у вас есть какие-либо модули, которые неправильно ссылаются на них, переходите к своим фазам сборки, УДАЛЯЙТЕ модули, которые беспокоят вас и повторно добавляют.