xcode 5.1: проблеми архітектури libCordova.a


81

Вчора (3.10.14), коли вийшов iOS 7.1, я також перейшов на Xcode 5.1 і виявив, що мій проект PhoneGap / Cordova більше не буде компілюватися на моєму iPhone 5s. Я також оновив Кордову до останнього випуску: 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його не було включено до жодної з архітектур налагодження чи випуску. На цей час для параметра « Побудувати активну архітектуру» встановлено значення «Так». Це призвело до такої помилки:

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. Що я можу зробити, щоб ця річ успішно скомпілювалася на моєму пристрої?

Оновлення: те саме питання про Jira від Apache: https://issues.apache.org/jira/browse/CB-6223


2
У мене точно така ж проблема. iOS 7.1 і Xcode 5.1 були доступні розробникам вже деякий час, тому розчаровує те, що команда Кордови, принаймні, не видала попередження про це до їх випуску.
Аде

Так. Я створив абсолютно новий проект «Привіт Світ» в Кордові з останньою інсталяцією Кордови, і він не зможе успішно скомпілюватись.
inorganik

Чи можна отримати і перевстановити iOS 7.0 SDK?
Аде

Я змусив його скомпілювати, використовуючи ці налаштування, але коли я переходжу до перевірки архіву, я отримую помилку: ** Цей пакет недійсний. Додатки, що містять архітектуру armv7s, повинні включати архітектуру armv7s. Що дивно , тому що це виглядає , як я вже включені обидва.
Аде

3
Виправити кроки у випуску Apache Cordova JIRA: issues.apache.org/jira/browse/CB-6223 .
Шазрон,

Відповіді:


86

@Shazron розмістив виправлення на Apache JIRA - він зазначає, що виправлення буде випущено як частина Cordova 3.5:

  1. Виберіть піктограму вашого проекту
  2. Виберіть Параметри побудови.
  3. Для "Архітектури" виберіть $ ARCHS_STANDARD - Стандартні архітектури (armv7, armv7s, arm64)
  4. Для "Дійсні архітектури" додайте "arm64"
  5. Виберіть піктограму CordovaLib.xcodeproj
  6. У налаштуваннях збірки проекту (не цільової) видаліть умовні параметри архітектури (наведіть курсор, щоб побачити знак мінус)
  7. Для "Архітектури" виберіть $ ARCHS_STANDARD - Стандартні архітектури (armv7, armv7s, arm64)
  8. Для "Дійсні архітектури" додайте "arm64"
  9. Goto 6, але тепер зробіть це для "Target"

Ось посилання на повний опис цієї проблеми Шазроном: 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, і якщо у вас є вже існуючий проект, виконайте “update ios для платформи cordova”.


10
Відмінно. На кроці 6 я правильно вважаю, що слід видалити ВСЕ з них: SCREENSHOT ?
Аде

1
Спочатку здається нормально : додаток архівує та перевіряє. Але при експортуванні як спеціальний дистрибутив він не працюватиме на iPhone 5S.
Аде

7
Так, ця відповідь змушує програму компілювати та встановлювати на 5S, але коли вона починає запускати, вона видає помилку lldb і аварійно завершує роботу (або робить паузу, якщо ваш пристрій прив’язаний до вашого Mac під час запуску Xcode).
Джоу Демпсі

5
Ось посилання на пост @Shazron. Він охоплює 3 випуски: shazronatadobe.wordpress.com/2014/03/12/…
stefbach 12.03.14

Я підтверджую, що це працює для мене. Не забудьте пункт 9, який полягає у видаленні будь-яких умовних налаштувань архітектури для цільової "Cordova Lib". Ви повинні мати як проект "CordovaLib", так і цілі "CordovaLib". Налаштування архітектури повинні виглядати: - Налагодження: Стандартна архітектура (...) - Випуск: Стандартна архітектура (...)
stefbach

11

Ще один підхід, який працює:

  1. Клацніть на свій проект у верхній частині навігатора проекту (а не на підпроект Cordova.lib).
  2. На панелі редактора виберіть проект (не цільовий), перейдіть на вкладку редактора Параметри побудови та натисніть кнопки Усі та Рівні.
  3. За потреби розгорніть групу «Архітектури» та знайдіть під нею рядок «Архітектури».
  4. Перший (вирішений) і третій (iOS за замовчуванням) стовпці в рядку Архітектура матимуть значення Стандарт; другий стовпець (проекту) буде порожнім.
  5. Клацніть на порожній другий стовпець, щоб відкрити вікно, яке матиме один рядок, "$ (ARCHS_STANDARD)".
  6. Двічі клацніть на цьому рядку, щоб його можна було редагувати, а потім змініть його на "$ (ARCHS_STANDARD_32_BIT)".
  7. Клацніть поза рамкою, щоб підтвердити зміни. Тепер у першому та другому ящиках просто буде по $.
  8. Тепер ви зможете будувати.

10

Пониження версії Xcode 5.1 до 5.0.2 у мене спрацювало, я не міг дочекатися офіційного випуску Cordova 3.5 із виправленням.

Ви можете отримати копію попередньої версії тут: https://developer.apple.com/downloads/index.action


3
Це спрацьовує - єдине застереження, що ви не можете перевірити безпосередньо в XCode на iPhone, який працює під управлінням iOS 7.1. Тут симулятор стане в нагоді. Складена програма може працювати на iOS 7.1 (підтверджена як на iPhone 5, так і на 5S), тому найнижчим варіантом є зниження до версії Cordova 3.5.
Аде

Це найкраще мені працює зараз. Завантажив Xcode 5.02 і скопіював його (спочатку назвавши його XCode_502) у Програмах, мені вдалося запустити його поряд із Xcode 5.1.
EeKay

Адже я знизився до версії 5.0.2 і тестував свою програму на iPhone 5 та iPad 2, обидві з iOS 7.1, без проблем, я також без проблем передав програму на iTunes Connect.
AlexLopezIT

8

Вони щойно випустили нову версію 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 з усіма виправленнями.


@JPRichardson Дякую, я буду модернізувати зараз :)
dk123

1
npm оновлення cordova -g, потім оновлення платформи cordova ios
sepulturkey

5

Дотримуйтесь інструкцій на цьому відео: https://www.youtube.com/watch?v=EIkJAKcz8DE

Просто додайте arm64 у свої проекти, діючі архітектури, і видаліть усю умовну архітектуру проекту Кордови.


Ти просто врятував мене оооочень багато головного болю. Це відео виправило проблему, з якою я боровся кілька годин.
Bullyen

Це спрацювало для мене. Дякуємо, що зробили відео - це зробило це дуже чітким.
Джон Q

3

Я зміг отримати свій додаток для побудови в XCode 5.1, спочатку побудувавши проект CordovaLib окремо від XCode, а потім побудувавши свій проект.


Це спрацювало і на мене. Ідеально, оскільки зниження версії Xcode (і неможливість тестувати на пристроях iOS7.1) для мене не є варіантом. Дякую!
Адам Таттл

2

Вам просто потрібно додати архітектуру arm64 до кожного висловлювання та налаштування будівлі, я маю на увазі, і для вашого поточного проекту, і для проекту Кордова.

Про ваш проект:

  • Архітектури
  • Дійсні архітектури

на Кордові:

  • Архітектури
  • налагоджувати
  • звільнення
  • Будь-який ios SDK

І НАЙГОЛОВНІШЕ

-Дійсні архітектури в настройках побудови Кордова

Ця конфігурація генерує багато попереджень, але просто змінює "% d" на "% ld" у всіх рядках, про які говорить попередження.


1

Візьміть значок xcode і перетягніть його в смітник!

Перейдіть сюди https://developer.apple.com/downloads/index.action?name=Xcode та завантажте 5.0.2 та встановіть.

Після встановлення запустіть xcode, а потім спробуйте емулятор з терміналу.

Працював у мене, хоч і дратує!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.