Подання програми для iOS: відсутня 64-розрядна підтримка


91

Я надіслав програму вчора на перевірку, без проблем. Потім я зрозумів, що мені потрібно зробити дуже мало (змінити максимальний рівень масштабування карти з 19 на 18, нічого іншого), тому я вилучив двійковий файл із iTunes Connect і спробував подати повторно.

Тепер я маю таке попередження:

попередження_xcode

Я не розумію чому, оскільки мої архітектури такі:

  • архітектури: armv7
  • діючі архітектури: armv6, armv7, armv7s, arm64

Додаток чудово працює в симуляторі. Якщо я спробую використати стандартні архітектури (armv7, arm64), як це рекомендовано в попередженні, тоді програма не збиратиметься, і я отримаю:

  • Невизначені символи для архітектури x86_64
  • ld: символів не знайдено для архітектури x86_64

Я використовую lib route-me, і я встановлюю ті самі налаштування архітектури.


У нас теж є ця проблема. :(
Азік Абдулла

Також лише з вчора?
Тім Аутін

1) спробуйте очистити DerivedData для Xcode після того, як ви це зміните; 2) можливо, ви використовуєте старіші зовнішні API, SDK, фреймворк тощо
TonyMkenu

@Tim Вам вдалося це виправити? Ви можете надіслати рішення для цього?
user2056563

Привіт, вибачте, я не знайшов рішення і більше не працюю над цим проектом. Наразі це лише попередження, тому я зміг надіслати програму.
Тім Отін

Відповіді:


106

Використовуйте " Standard architectures" так:

  • Архітектура: "Стандартні архітектури" arm7, arm64
  • Дійсні архітектури: " arm64 ", armv7 ...
  • Побудувати лише активну архітектуру - НІ (особливо ... якщо підключений пристрій не сумісний з arm64)

подобається це:

введіть тут опис зображення

  • Крім того, відомо, що відключення iphone та ipad від mac допомагає, особливо якщо це 32-розрядні версії.

2
Дякую за вашу відповідь, але, як зазначено у моєму запитанні, я вже спробував це, і проект не компілюється з такими налаштуваннями: /
Тім Аутін

3
@ Тим, так, я теж був armv7 and arm64у Architechtures. Тим не менше, відсутність 64-розрядного попередження про підтримку виникає під час перевірки програми на подання.
Азік Абдулла

@NAZIK у вас є arm64 в обох рядках (Архітектура та Дійсна архітектура)? У мене була та сама помилка, і це було рішення
TonyMkenu

@Tim спробуйте очистити свої DerivedData та перевірити свою останню зовнішню структуру або SDK, якщо вони мають 64-бітну підтримку
TonyMkenu

3
Також переконайтесь, що пристрій НЕ підключено під час архівування остаточної збірки. Див @powertoold відповідь наведеного нижче ( stackoverflow.com/a/26848865/1715004 )
Філіпе Borges

68

Після підтвердження правильної архітектури переконайтесь, що ваш пристрій НЕ підключено до вашого комп’ютера під час АРХІВУВАННЯ остаточної збірки для надсилання в App Store.

Причиною появи цього попередження є те, що пристрій, який ви підключили, ймовірно, не сумісний з arm64.


4
Знімаю капелюх! : D Ви врятували мій час
Вайбхав Лімбані

1
Велика допомога !! Це заощадило мені багато часу на цьому. Хороша порада для оновлення старих програм.
Гаррі

Я вважаю, що ви можете зберегти підключені не 64-бітові пристрої, якщо змінити налаштування збірки Build Active Architecture Onlyна No. Це змусить xcode створити 64-бітний двійковий файл незалежно від того, який пристрій підключено.
jxmallett

3
На додаток до відповіді @jxmallett, переконайтесь, що для Вашого архіву схеми встановлено значення Release, у якому Build Active Architectureвстановлено значення No. Встановити схему архіву
KarenAnne

1
FYI Мені довелося відключити пристрій від мережі, перейти на симулятор, а потім знову перейти на «Пристрій iOS», щоб це працювало.
nwkeeley

37

Як писав Тоні, важливо мати в обох рядках ці налаштування. Оскільки мій (і, очевидно, ваш) проект був створений ще до того, як arm64 був доданий до стандарту, він не відображається в "Дійсних архітектурах", навіть якщо він відображається як Стандартний.

Що я зробив:

  • Я перейшов до конфігурації проекту (проти цільової)
  • Введений «arm64» в дійсній Архітектурі (це автоматично відображається в мішенях і схемах

Після очищення / складання я навіть отримую деякі попередження про неправильне перетворення float у CGFloat тощо, тому налаштування, очевидно, застосовуються.

Попередження про перевірку теж зникло!

введіть тут опис зображення


1
> не відображається у "Дійсних архітектурах", навіть якщо воно відображається як стандартне. Для мене це було важливо. Дякую!
Ромен

1
Якщо це допомагає іншим, мені довелося змінити і проект, і ціль, щоб
приступити

@djburdick Дякую. Це працювало для мене, коли нічого іншого не робило.
Дейв Чемберс,

27

Від'єднайте свій фізичний пристрій від Mac. У списку пристроїв XCode виберіть iOS Device та створіть Архів знову. У мене це спрацювало.


5

Сьогодні я вирішую цю проблему наступними кроками:

Налаштування будівлі:

Архітектура: Стандартні архітектури (arm7, arm64) - $ (ARCH_STANDARD)

Дійсні архітектури: armv7 armv7s arm64

  1. Очистіть і створіть свою програму, підключивши iPhone
  2. Від'єднайте свій iPhone і перевірте верхню панель, якщо в "Пристрій iOS"
  3. Архів
  4. Перевірка та подання

@ Тімучін. Вибачте за мою пізню відповідь, ви маєте рацію: armv7 armv7s arm64.
Леонель Фолмер

3

Просто створіть новий проект, використовуючи останню версію xCode, і знайдіть налаштування збірки. Новий проект, створений з використанням останньої версії, за замовчуванням підтримує 64.

введіть тут опис зображення


менше 2% людей використовують iOS 6 або менше. developer.apple.com/support/appstore
Kirit Vaghela

2

Гаразд, це було божевільно. Я спробував кожну окрему відповідь. Але це спрацьовувало лише тоді, коли я розміщував arm64раніше armv7і armv7sу «Дійсних архітектурах».

PS: xcode version : 7.2


1
Так. лише тоді і лише після підключення пристрою відображався фактичний журнал помилок. Потім з’явилися кілька рядків коду, які застаріли та потребують (червоного) виправлення, та деякі проблеми з бібліотекою RSA.
maxweber

1

Я вирішив проблему, змінивши,

Архітектури: arm7, arm64

Дійсна архітектура: arm7, arm64

Створення лише активної архітектури: Так


1

Я подав успіх за допомогою конфігурації як зображення: введіть тут опис зображення

(Архівовано на реальному пристрої)


1
Повинен встановити режим випуску на no
ZYiOS

1

Позбувся кожного попередження. Переглядав все знову і знову. Знайшов тут одне слово відповідь вище.

"Побудувати лише активну архітектуру - НІ (особливо ... якщо підключений пристрій не сумісний з arm64)"

Мій iPad не 64-розрядний. Поставте НІ для побудови активної архітектури, і моє подання спрацювало!


0

Змініть ціль розвитку iOS як мінімум на 5.1.1 або ж видаліть стандартне налаштування архітектури та застосуйте повторно. Можливо, ви бачили попередження про те, що arm64 несумісний з вашою ціллю збірки. На сторінці огляду перевірте параметри побудови та цільової "цілі розгортання". У моєму випадку ціль становила 6,0, але проект - 5,0.

Також перевірте "Дійсні архітектури" як у вашому цільовому, так і у вашому проекті. Я мав правильні налаштування для проекту, але не для цілі. Після цього у мене це вийшло.

Перемикайтеся між проектом / ціллю на сторінці огляду у верхньому лівому куті вікна.


Ви справді маєте на увазі 5.1.1? 5.1 недостатньо недавно?
Дірк

Це було довгий час. Я не знаю і не пам’ятаю логіки цього. Просто виконайте кроки, і щось може повернутися на своє місце. Спілкуватися з архітектурою та всіма згаданими сторінками.
user1122069

0

Будь ласка, поставте прапорець біля пункту Створення активної архітектури. Встановіть значення НІ. Це працює для мене.

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