Xcode 4.5 нет такого файла или каталога - libCordova.a
clang: ошибка: нет такого файла или каталога: '/Users/admin/Library/Developer/Xcode/DerivedData/__TESTING__-fzbkvdbnndieeagphtjhdndiyttl/Build/Products/Debug-iphoneos/libCordova.a'
Как мне получить этот отсутствующий libCordova.a?
http://www.kerrydeaf.com/libCordova.a.png
ОБНОВЛЕНИЕ: Для Саймона Жермена. http://www.kerrydeaf.com/update.png
ОБНОВЛЕНИЕ: Для Саймона Жермена. Я не вижу "Идентичность и Тип". Я вижу "идентичность". Я использую xcode 4.5 http://www.kerrydeaf.com/id.png
http://www.kerrydeaf.com/update.png
ОБНОВЛЕНИЕ: Для Саймона Жермена. Я получил идентичность.
http://www.kerrydeaf.com/cor.png
ОБНОВЛЕНИЕ: для Самуила
http://www.kerrydeaf.com/armv6.png
ОБНОВЛЕНИЕ: Для Саймона Жермена - Архитектура.
ОБНОВЛЕНИЕ: для james0n - armv.
http://www.kerrydeaf.com/new.png
ОБНОВЛЕНИЕ: Для Саймона Жермена - Архитектура.
ОБНОВЛЕНИЕ: для james0n - armv.
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_CDVURLProtocol", referenced from:
objc-class-ref in AppDelegate.o
"_OBJC_CLASS_$_CDVViewController", referenced from:
_OBJC_CLASS_$_MainViewController in MainViewController.o
"_OBJC_METACLASS_$_CDVViewController", referenced from:
_OBJC_METACLASS_$_MainViewController in MainViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ОБНОВЛЕНИЕ: Для james0n - Действительная архитектура.
http://www.kerrydeaf.com/valid.png
ОБНОВЛЕНИЕ: Это теперь решено!!! убедитесь, что все armv7 и armv7s для ios 6 на всех в xcode. Это сработало.
12 ответов
Для вашего проекта установите для параметра сборки "Build Active Architecture Only" значение yes.
(Возможно, также установите для параметра "Сборка архитектур" значение "Стандартный (armv7, armv7s)" для проекта CordovaLib.)
Была (как и многие другие) такая же проблема, вот что я сделал:
- Переделал руководство по началу работы с Phonegap (включая загрузку и повторное извлечение исходного кода)
- Та же проблема с приложением HelloWorld
- продукт - чистый
- Изменены оба проекта 'HelloWorld' и 'CordovaLib' (поэтому не цели) в соответствии с ответом james0n, настройки:
Архитектура: Стандартная (armv7, armv7s)
Строить только активную архитектуру: Да
и затем это волшебным образом сработало, я думаю, что шаги 3 и 4 сделали это как бы то ни было.
Нужно только удалить armv6 из YourProject и CordovaLib:
Последствия этого? Судя по всему, он все еще работает на iPhone 3GS, но не на предыдущих версиях.
У меня была та же проблема, что и у вас, отлично работала развернутая на симуляторах, но не на устройстве. Ни один из предложенных ответов не работал для меня.
Вот что сработало для меня:
Установите цель развертывания v4.3 и в настройках проекта для CordovaLib
проект, установите Build Active Architecture Only
в Yes
, (Не требуется в вашем основном проекте).
Важно, сделать продукт-> Очистить и восстановить.
Убедитесь, что целевой продукт CordovaLib установлен на "Относительно встроенного продукта" на правой боковой панели, первая вкладка слева, под "Идентификационные данные и тип".
Вы должны запустить скрипт обновления, я знаю, что это может быть неприятно, но это то, что нужно.
Скачайте и откройте пакет Phonegap 2.1 с официального сайта. Откройте окно терминала и перейдите в каталог установки
Сначала вам нужно будет создать новый проект:
./create [project_folder_path] [package_name] [project_name]
Затем вам нужно установить путь к вашим библиотекам.
/update_cordova_subproject [xcodeproj file]
Теперь откройте ваш проект и установите цель развертывания 4.3, и вы должны быть готовы к работе. надеюсь, это поможет
РЕДАКТИРОВАТЬ:
Вот так выглядит моя конфигурация для проекта CordovaLib
Кроме того - убедитесь, что у вас не открыто более одного проекта PhoneGap Xcode одновременно - у меня возникли конфликты между ними. Цикл "Рабочая область уже открыта в другой рабочей области".
Я исправил это, удалив архитектуру armv6 и i386 из настройки Valid Architecture.
Проведя много часов с еще большим количеством ошибок, вот что сработало для меня. В основном объединяя многое из вышеперечисленного:
- Начните с новой копии Cordova. Если ты баловался с ним, как я, он больше не свежий.
- Переместите файлы Cordova из каталога загрузки (я стараюсь чистить этот каталог время от времени...)
- Создайте новый проект, как описано в документации Phonegap, то есть перетащите папку ios/bin на значок терминала и запустите сценарий создания в терминале. Нет необходимости запускать скрипт update_cordova_subproject.
- Откройте проект в XCode.
- Для вашего продукта установите iOS Deployment Target равным 4,3 (я сделал это 2 раза, как в Project, так и в Target Build Settings).
- Для CordovaLib.xcodeproj установите для параметра "Сборка для активной архитектуры" значение "Да" в настройках сборки проекта.
- Очистить и запустить.
Не включайте armv7s ни в один из списков архитектуры, так как он не будет собираться для устройства.
Протестировано в симуляторе и на iPad с iOS 6. Использование Phonegap 2.1.0 и XCode 4.5.1.
Обновление: если вы хотите поддерживать iPhone 5, вам понадобится armv7s. Это требует исправления в https://issues.apache.org/jira/browse/CB-1360, который будет в Cordova 2.2.0. (Еще не пробовал, работаю над проектом iPad.)
Загрузите установщик Cordova отсюда http://phonegap.com/download. Убедитесь, что это та же версия, которую вы используете в настоящее время (например, 2.0).
Затем смонтируйте dmg, найденный в каталоге ios.
Затем запустите установщик.pkg.
Перезапустите Xcode.
В дополнение к нескольким другим предложениям и публикациям я обнаружил, что у меня возникла эта проблема только в моих сборках AdHoc. Пожалуйста, обратите внимание, что я понял это во время отладки, потому что, если я установлю "Редактировать схему"> "Конфигурация сборки архива" на "выпуск", он будет работать нормально, но если установить значение "AdHoc", это даст мне ошибку ссылки, сообщающую, что этот файл не может быть найденный:
/Users/jason/Library/Developer/Xcode/DerivedData/MommyNearest-ceourmykvgxdekbkmzenuvhcfnzk/Build/Intermediates/ArchiveIntermediates/MommyNearest/BuildProductsPath/Adhoc-iphoneos/libCordova.a
На самом деле это было хорошим ключом к пониманию проблемы, заключающейся в том, что подпроект CordovaLib каким-то образом не имел конфигурации AdHoc (он имел только конфигурации "Debug" и "Release").
Поэтому при сборке для выпуска AdHoc (для использования с Testflight) он не будет правильно создавать символическую ссылку для этого файла. Как только я добавил конфигурацию "AdHoc" в подпроект CordovaLib, это начало работать.
У меня тоже была эта пробема. Я думаю, что это потому, что я ранее установил старую версию телефона, которая установила некоторые вещи в XCode. Я удалил, затем переустановил xcode. Затем я запустил Unipstall Cordova.applescript, который пришел с пробелом в телефоне. Это исправило проблему красного libCordova.a