Вчера (3.10.14), когда была выпущена iOS 7.1, я также обновился до Xcode 5.1 и обнаружил, что мой проект PhoneGap / Cordova больше не компилируется на мой iPhone 5s. Я также обновил Cordova до последней версии: v 3.4.0-0.1.3.
Я читал много разных решений по SO, которые связаны с таким изменением активных архитектур и построением только активных архитектур, и ни одно из них не работает. Итак, вот что я пробовал и какие ошибки получаю. Изначально у меня возникла ошибка:
missing required architecture arm64 in file <long file path omitted> libCordova.a
Undefined symbols for architecture arm64
Итак, я попробовал следующее. Я выбрал подпроект CordovaLib в моем проекте, и в обоих проекта и цели, я пошел в настройки для сборки под Архитектуры и убедились , что arm64
не был включен ни в одной из архитектур Debug или Release. В настоящее время для параметра " Только сборка активной архитектуры" установлено значение "Да". Это привело к следующей ошибке:
file was built for archive which is not the architecture being linked (armv7):
<long file path omitted> libCordova.a
Undefined symbols for architecture armv7
Если установить « Только сборка активной архитектуры» на «Нет», ошибка снова станет следующей:
missing required architecture arm64 in file <long file path omitted> libCordova.a
Undefined symbols for architecture arm64
Я не знаю, что еще попробовать. В настройки архитектуры проекта входит только ключ «Базовый SDK», установленный на iOS 7.1. У цели проекта нет настроек архитектуры. В любом случае я почти уверен, что проблема заключается во встроенном подпроекте CordovaLib. Что я могу сделать, чтобы эта штука успешно скомпилировалась на моем устройстве?
Обновление: та же проблема в Apache Jira: https://issues.apache.org/jira/browse/CB-6223
Ответы:
@Shazron опубликовал исправление в Apache JIRA - он отмечает, что исправление будет выпущено как часть Cordova 3.5:
Вот ссылка на полное описание этой проблемы Шазроном: http://shazronatadobe.wordpress.com/2014/03/12/xcode-5-1-and-cordova-ios/
Теперь он выпущен, и краткая версия того, что нужно делать, такова:
Cordova CLI 3.4.1-0.1.0 отсутствует, включая Cordova iOS 3.4.1, которая включает все исправления, упомянутые в этом сообщении в блоге. Обновите свой Cordova CLI, и если у вас есть существующий проект, выполните «обновление платформы cordova ios».
источник
Другой подход, который работает:
источник
У меня сработало понижение версии с Xcode 5.1 до 5.0.2, я не мог дождаться официального релиза Cordova 3.5 с исправлением.
Вы можете получить копию предыдущей версии здесь: https://developer.apple.com/downloads/index.action
источник
Они только что выпустили новую версию 3.4.1, в которой устранены эти проблемы.
Поэтому я обновляю один файл, чтобы он указывал на TAG 3.4.1:
/usr/local/lib/node_modules/cordova/platforms.js
строка 24 из:
version: '3.4.0'
кому:
version: '3.4.1'
Затем вы удаляете папку iOS в своем проекте и запускаете:
cordova platform add ios
Это загрузит новый шаблон на основе 3.4.1 со всеми исправлениями.
источник
Следуйте инструкциям в этом видео: https://www.youtube.com/watch?v=EIkJAKcz8DE.
Просто добавьте arm64 в свои проекты действующей архитектуры и удалите всю условную архитектуру проекта Cordova.
источник
Мне удалось создать свое приложение в XCode 5.1, сначала построив проект CordovaLib отдельно из XCode, а затем построив свой проект.
источник
Вам просто нужно добавить архитектуру arm64 в каждый оператор и настройку здания, я имею в виду, в вашем текущем проекте и в проекте Cordova.
В вашем проекте:
о Кордове:
И САМОЕ ВАЖНОЕ
-Действительные архитектуры в настройках сборки Cordova
Эта конфигурация генерирует множество предупреждений, но просто замените "% d" на "% ld" во всех строках, которые говорится в предупреждении.
источник
Возьмите значок xcode и перетащите его в корзину!
Перейдите сюда https://developer.apple.com/downloads/index.action?name=Xcode, скачайте 5.0.2 и установите.
После установки запустите xcode, затем попробуйте эмулятор с терминала.
У меня работало, хоть и раздражало!
источник