Xcode 5.1: проблемы с архитектурой libCordova.a
Вчера (3/10/14), когда был выпущен iOS 7.1, я также обновился до Xcode 5.1 и обнаружил, что мой проект PhoneGap/Cordova больше не будет компилироваться для моего iPhone 5. Я также обновил Кордову до последней версии: 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
Я не уверен, что еще попробовать. Параметры архитектуры проекта включают только ключ "Base SDK", который установлен в iOS 7.1. Цель проекта не имеет настроек архитектуры. Во всяком случае, я уверен, что проблема связана с встроенным подпроектом CordovaLib. Что я могу сделать, чтобы эта вещь успешно скомпилировалась на моем устройстве?
Обновление: та же проблема на Apache Jira: https://issues.apache.org/jira/browse/CB-6223
Ответы
Ответ 1
@Shazron отправил исправление в Apache JIRA - он отмечает, что исправление будет выпущено как часть Cordova 3.5:
- Выберите значок проекта
- Выберите "Настройки сборки".
- Для "Архитектур" выберите $ARCHS_STANDARD - Стандартные архитектуры (armv7, armv7s, arm64).
- Для "Действительных архитектур" добавьте "arm64"
- Выберите значок CordovaLib.xcodeproj
- В настройках сборки для проекта (не цели) удалите настройки условной архитектуры (наведите указатель на минус)
- Для "Архитектур" выберите $ARCHS_STANDARD - Стандартные архитектуры (armv7, armv7s, arm64).
- Для "Действительных архитектур" добавьте "arm64"
- Перейти к 6, но теперь сделайте это для "Target"
Здесь ссылка на Shazron для полной записи этой проблемы: 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, которая включает в себя все исправления, упомянутые в этом сообщении в блоге. Обновите свой CLI-интерфейс Cordova, и если у вас есть существующий проект, сделайте "обновление платформы платформы cordova".
Ответ 2
Другой подход, который работает:
- Нажмите на свой проект в верхней части навигатора проекта (не подпроект Cordova.lib).
- В области редактора выберите проект (а не цель), выберите вкладку "Редактор настроек сборки" и нажмите кнопки "Все и уровни".
- При необходимости разверните группу "Архитектуры" и найдите под ней строку "Архитектуры".
- Первые (разрешенные) и третьи столбцы (по умолчанию iOS) в строке Архитектура скажут "Стандарт"; второй (проект) столбец будет пустым.
- Нажмите на пустой второй столбец, чтобы открыть окно, в котором будет одна строка, "$ (ARCHS_STANDARD)".
- Дважды щелкните эту строку, чтобы сделать ее редактируемой, затем измените ее на "$ (ARCHS_STANDARD_32_BIT)".
- Щелкните вне поля, чтобы подтвердить изменения. Теперь у первого и второго ящиков будет только $.
- Теперь вы сможете построить.
Ответ 3
Переход на Xcode с 5.1 до 5.0.2 работал у меня, я не мог дождаться официального релиза Cordova 3.5 с исправлением.
Вы можете получить копию предыдущей версии здесь: https://developer.apple.com/downloads/index.action
Ответ 4
Они только что выпустили новую версию 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 со всеми исправлениями.
Ответ 5
Следуйте инструкциям на этом видео:
https://www.youtube.com/watch?v=EIkJAKcz8DE
Просто добавьте arm64 в свои проекты, допустимые архитектуры и удалите всю условную архитектуру проекта Cordova.
Ответ 6
Я смог получить мое приложение для сборки в XCode 5.1, сначала создав проект CordovaLib отдельно от XCode, а затем создав свой проект.
Ответ 7
Вам просто нужно добавить архитектуру arm64 для каждого оператора и настройки здания, я имею в виду,
по вашему текущему проекту и по проекту cordova.
В вашем проекте:
- Архитектуры
- Допустимые архитектуры
на Кордове:
- Архитектуры
- отладки
- релиз
- Любой SDK ios
И САМЫЙ ВАЖНЫЙ
-Высокие архитектуры при настройке кордовы
Эта конфигурация генерирует много предупреждений, но просто меняет "% d" на "% ld" на всех строках, о которых говорится в предупреждении.
Ответ 8
Возьмите значок xcode и перетащите его в корзину!
Перейдите сюда https://developer.apple.com/downloads/index.action?name=Xcode и загрузите 5.0.2 и установите.
После установки запустите xcode, затем попробуйте эмулятор с терминала.
Работала для меня, раздражающая, хотя!