Xcode - Ошибка ITMS-90635 - Недопустимый Mach-O в комплекте - отправка в App Store

Я просто получил эту ошибку при отправке приложения в магазин приложений.

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

Означает ли это, что мне нужно установить ENABLE_BITCODE для всех зависимостей? Я попробовал это, но потом получил ошибки, заявляя, что зависимости не совместимы с битовым кодом (или что-то в этом роде)...

Ответ 1

У меня была такая же проблема сегодня утром. Фактически, ответ находится в ошибке: "Убедитесь, что все цели для платформы имеют согласованное значение для настроек сборки ENABLE_BITCODE"

У меня была цель (с ENABLE_BITCODE установлено значение NO), используя несколько контейнеров, для которых ENABLE_BITCODE установлен в YES. Итак, все, что мне нужно было сделать, это установить ENABLE_BITCODE в YES в моей целевой программе. Но я думаю, у вас есть выбор, вы также можете установить ENABLE_BITCODE в НЕТ во всех используемых вами библиотеках.

Ответ 2

Самое простое и наиболее частое исправление:

Вы можете снять флажок "Включить биткод" при отправке приложения через Xcode. снимите флажок

Если вы используете xcodebuild, вы можете использовать pass exportOptionsPlist со значением uploadBitcode, установленным в false. В моем случае мы используем xctool для создания приложения и не имеем возможности передать exportOptionsPlist, поэтому нам пришлось удалить биткод из всех наших фреймворков.


Если кто-то использует cocoapods и хочет отключить биткод для своих фреймворков, вы можете просто добавить в свой файл podfile следующее:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end

Через fooobar.com/questions/13025/...


Чтобы добавить немного больше разъяснений относительно того, что происходит с этой проблемой:

Кажется, что яблоко только что начало применять это вчера. Если ваш основной двоичный код отключен, но вы включили статическую библиотеку или фреймворк, в котором включен биткод, это приведет к отказу проверки. Это происходит и наоборот: если ваш основной двоичный файл включен, но вы включаете библиотеку/фреймворк, у которого отключен биткод, он не сможет выполнить проверку.

У меня было несколько зависимостей от GoogleMaps и Amazon, которые сделали ненужным переключить все, чтобы включить биткод, поэтому я просто отключил его и удалил биткод из одной статической библиотеки, которую я импортировал в свой проект. Вы можете удалить бит-код из любого двоичного файла, используя следующую команду

$ xcrun bitcode_strip -r {Framework}.dylib -o tmp.dylib
$ mv tmp.dylib {Framework}.dylib

https://developer.apple.com/library/content/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc7_release_notes.html

В то время как вышеприведенные решения проблемы, я не согласен с тем, что если основной двоичный код отключен с помощью битового кода, для этого нужны все включенные двоичные файлы. Биткод - это всего лишь некоторый ИК-код, который Apple может использовать для разбавления приложений - почему бы им просто не удалить его из других двоичных файлов (что я предполагаю, это то, что они ранее делали)? Это не имеет для меня никакого смысла.

Apple thread https://forums.developer.apple.com/thread/48071

Ответ 3

Я просто снял флажок с "include bitcode" и начал загружать

Ответ 4

Для Карфагена

  • Откройте свои библиотеки в папке проекта (Carthage- > Checkouts → [имя lib])
  • Затем откройте каждый lib в Xcode
  • Установить Включить биткод - Нет в настройках сборки введите описание изображения здесь
  • Сделайте это для каждой библиотеки в списке
  • Сборка carthage carthage build --platform xxx

Затем вы можете архивировать и отправить в Appstore успешно

Ответ 5

Мы получили ту же ошибку "Xcode - Ошибка ITMS-90635 - Недопустимый Mach-O в комплекте - отправка в App Store" с последней пятницы (3 июня 2016 года).. использовали указанные ниже 2 шага, чтобы сделать это

Шаг 1:
Добавлен код в файл pod для отметки 'ENABLE_BITCODE' = 'NO' в папках

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
    end
  end
end

Шаг 2:
Отмечено 'ENABLE_BITCODE' = 'NO' в контейнерах для проекта

Примечание. Пробовалась с маркировкой 'ENABLE_BITCODE' = 'YES' в модулях и в моем проекте, но поскольку мы используем фреймворк twillio для вызова, у которого есть флаг -read_only_relocs, который не позволяет компиляцию с помощью 'ENABLE_BITCODE' = 'YES'. Поэтому, если ваше приложение не использует какую-либо из таких фреймворков с -read_only_relocs, вы можете продолжить создание 'ENABLE_BITCODE' = 'YES', поскольку это будет полезно для вашего приложения.

Ответ 6

Для тех, кто имеет ошибку сборки после установки "Включить биткод" на "Да". Я должен обновить всю библиотеку. Но самая простая часть - использовать Cocoapods.So, пожалуйста, обновите весь проект pod: (один за другим) или All

Затем перед архивом установите Enable BitCode на "Нет".

Затем Архив → Загрузка → Это будет проходить эта ошибка.

Приветствия.

Ответ 7

У меня была такая же проблема с проектом "ENABLE_BITCODE = YES" и зависимостями "ENABLE_BITCODE = YES" на моем CI с Xcode 7.3. Решение обновляло Xcode до последней доступной версии (7.3.1)