Отправка приложения iOS: отсутствует поддержка 64-разрядной версии

91

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

Теперь у меня такое предупреждение:

warning_xcode

Я не понимаю почему, так как мои архитектуры:

  • архитектуры: armv7
  • допустимые архитектуры: armv6, armv7, armv7s, arm64

Приложение отлично работает в симуляторе. Если я попытаюсь использовать стандартные архитектуры (armv7, arm64), как рекомендовано в предупреждении, приложение не будет построено, и я получу:

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

Я использую lib route-me и устанавливаю те же параметры архитектуры.

Тим Атин
источник
У нас тоже есть эта проблема. :(
Назик
Также со вчерашнего дня?
Тим Атин
1) попробуйте очистить DerivedData для Xcode после его изменения; 2) возможно, вы используете более старый внешний api, sdk, framework и т. Д.
TonyMkenu
@ Тим Тебе удалось это исправить? не могли бы вы опубликовать решение для этого?
user2056563 05
Привет, извините, я не нашел решения, и я больше не работаю над этим проектом. Пока это просто предупреждение, поэтому я смог отправить приложение.
Тим Атин

Ответы:

106

Используйте " Standard architectures" так:

  • Архитектура: «Стандартные архитектуры» arm7, arm64
  • Допустимые архитектуры: " arm64 ", armv7 ...
  • Только сборка активной архитектуры - НЕТ (особенно ... если ваше подключенное устройство несовместимо с arm64)

как это:

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

  • Кроме того, известно, что отсоединение iPhone и iPad от Mac помогает, особенно если это 32-разрядные версии.
ТониМкену
источник
2
Спасибо за ваш ответ, но, как указано в моем вопросе, я уже пробовал это, и проект не компилируется с
такими
3
@ Тим, да, у меня тоже было armv7 and arm64в Architechtures. Тем не менее, при проверке приложения для отправки появляется предупреждение об отсутствии 64-разрядной поддержки.
Nazik
@NAZIK у вас есть arm64 в обеих строках (архитектуры и допустимые архитектуры)? У меня была та же ошибка, и это было решение
TonyMkenu
@Tim попытается очистить ваши DerivedData и проверить последнюю внешнюю структуру или SDK, если они поддерживают 64-битную
версию
3
Кроме того, при архивировании окончательной сборки убедитесь, что ваше устройство НЕ подключено. См. Ответ @powertoold ниже ( stackoverflow.com/a/26848865/1715004 )
Филипе Борхес
68

После подтверждения правильной архитектуры убедитесь, что ваше устройство НЕ подключено к вашему компьютеру при АРХИВАЦИИ окончательной сборки для отправки в App Store.

Это предупреждение появляется потому, что УСТРОЙСТВО, которое вы подключили, вероятно, несовместимо с arm64.

powertoold
источник
4
Снимаю шляпу! : D Вы сэкономили мне время
Вайбхав Лимбани
1
Большая помощь !! Сэкономил мне много времени на этом. Хороший совет по обновлению старых приложений.
harry
Я считаю, что вы можете сохранить подключенными свои не 64-битные устройства, если измените настройку сборки Build Active Architecture Onlyна No. Это заставит xcode создать 64-битный двоичный файл независимо от того, какое устройство подключено.
jxmallett
3
В дополнение к ответу @jxmallett убедитесь, что для вашего архива конфигурации схемы установлено значение Release, в котором для параметра Build Active Architectureустановлено значение No. Установить схему
архивации
1
К вашему сведению, мне пришлось отключить свое устройство, переключиться на симулятор, а затем снова переключиться на «Устройство iOS», чтобы это работало.
nwkeeley 01
37

Как писал Тони, эти настройки важны в обеих строках. Поскольку мой (и, очевидно, ваш) проект был создан еще до того, как arm64 был добавлен в стандарт, он не отражен в «Действительных архитектурах», даже если он отображается как Стандартный.

Что я сделал:

  • Я перешел в конфигурацию Project (vs. Target)
  • Набрано "arm64" в Действительных архитектурах (автоматически отражается в целях и схемах).

После очистки / сборки я даже получаю некоторые предупреждения о неправильном преобразовании float в CGFloat и т.д., поэтому настройки, очевидно, применяются.

Предупреждение о валидации тоже исчезло!

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

Ник Энтин
источник
1
> не отражено в «Действительных архитектурах», даже если оно отображается как стандартное. Это было для меня точкой. Спасибо!
Romain
1
В случае, если это поможет другим, мне пришлось изменить и Project, и Target, чтобы приступить к работе
djburdick
@djburdick Спасибо. Это сработало для меня, когда ничего не помогло.
Дэйв Чемберс,
27

Отключите физическое устройство от Mac. В XCode в списке устройств выберите устройство iOS и снова создайте архив. У меня это сработало.

храст
источник
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
Кирит Вагела
2

Ладно, это было безумием. Я перепробовал каждый ответ. Но это сработало только тогда, когда я поместил arm64ранее armv7и armv7sв Valid Architectures.

PS: xcode version : 7.2

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

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

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

Допустимая архитектура: arm7, arm64

Только создание активной архитектуры: Да

user3616535
источник
1

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

(Архивировано с реального устройства)

Bkillnest
источник
1
Следует установить режим выпуска на нет
ZYiOS
1

Избавился от всех предупреждений. Перебирал все снова и снова. Нашел однословный ответ здесь выше.

«Только сборка активной архитектуры - НЕТ (особенно ... если ваше подключенное устройство несовместимо с arm64)»

Мой iPad не 64-битный. Поставьте НЕТ для Build Active Architecture, и моя заявка сработала!

Горный человек
источник
0

Измените цель разработки iOS как минимум на 5.1.1 или, в качестве альтернативы, удалите настройку стандартной архитектуры и повторно примените ее. Возможно, вы видели предупреждение о том, что arm64 несовместим с вашей целью сборки. На странице обзора проверьте параметры сборки и целевой «целевой объект развертывания». В моем случае цель была 6.0, но проект был 5.0.

Кроме того, отметьте «Действительные архитектуры» как в своей цели, так и в своем проекте. У меня были правильные настройки по проекту, но не по цели. После этого у меня все заработало.

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

user1122069
источник
Вы действительно имеете ввиду 5.1.1? 5.1 недостаточно недавно?
Дирк
Это было давно. Я не знаю и не помню логики этого. Просто сделайте шаги, и что-то может вернуться на свое место. Поиграйте с архитектурами и всеми упомянутыми страницами.
user1122069 03
0

Пожалуйста, отметьте опцию Build Active Architecture. Установите значение NO. Меня устраивает.

ПРИТАМ САТПУТЕ
источник