Не удалось отправить приложение - 1 + поврежденные двоичные файлы/использование не публичного API и никаких дополнительных сведений

Я отправлял свое приложение в App Store для тестового полета и после сборки 11, Ive получал сбои по электронной почте от Apple:

Непубличное использование API: приложение содержит один или несколько поврежденных двоичных файлов. Переустановите приложение и повторно отправьте

Я не получаю от них никаких дополнительных данных. Нет имен или классов методов или чего-либо еще.

Например, я представил сборку 15, которая является буквально точной копией сборки 11 (которая прошла!) с ошибкой номера версии и сбором 15.

Я считаю, что это ошибка Apple, хотя я не могу доказать это иначе, чем выше. Сборка 1-11 отлично работала, и их можно было загружать и распространять.

Im, используя Xcode 9.1 и 9.2, оба дают ту же ошибку.

Ive также связался с Apple через DTS, и они сказали, что они не могут мне помочь.

Что мне теперь делать?

Ответ 1

У меня была эта точная проблема. Я использовал CommonCrypto как фальшивую структуру. Я удалил это и переключился на метод, описанный принятым ответом в этом потоке, и iTunesConnect принял мою сборку.

Получение предупреждения о преобразовании Swift 4 от XCode или наличие "CommonCryptoModule", отображаемого в CMD-выходе при использовании pod update, похоже, является сильным индикатором того, затронута ли эта проблема или нет.

Ответ 2

Я нашел решение самостоятельно после загрузки 9-й сборки.

  • Я использовал некоторый быстрый класс в исходном коде objective-c, который я использовал мостом. Пока вы строите проект, вы можете увидеть предупреждение левой панели о связанном проекте и есть однострочное обновление для быстрого 4.
  • После преобразования swift 4 я получаю еще несколько предупреждений, таких как use @objc, чтобы использовать быстрый код версии 3 для быстрого быстрого 4.
  • Вы можете проверить, как использовать @objc в классе swift, проверьте эту ссылку: Использование вывода Swift 3 @objc в режиме Swift 4 устарел?

  • Затем у меня есть изменения неиспользуемых профилей.

Затем я загружаю приложение, и оно работает. Дайте мне знать, если кому-то нужна помощь.

Ответ 3

Наши проекты, у которых не был установлен биткод, начали сбой в пятницу 2018-01-26. Установка Enable Bitcode в Yes в настройках сборки этих проектов решила проблему.

Ответ 4

Была та же проблема с субботы. В нашем случае долгое испытание и ошибка, включение Bitcode не помогло. Следующей частью моего podfile была причина:

post_install do |installer| 
  puts("Set deployment target")
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.3'
    end
  end
end

После того, как я удалил это, он обработался без ошибки (все еще с отключенным Bitcode). Это действительно озадачивает меня, но почему установка цели развертывания внезапно вызывает отклонение.

Ответ 5

После большого количества исследований по этой части мы, наконец, нашли проблему для этого вопроса: Похоже, что Apple дает эту ошибку для приложений, которые поддерживают как 32, так и 64 бит.

Apple предоставила это напоминание для Mac Appstore, но похоже, что приложения iOS также затронуты.

Таким образом, решение для этого - поддерживать бит-код ИЛИ отказаться от поддержки 32-разрядных устройств, удалив поддержку ARMV7 и ARMV7S или ниже из Valid Architectures из настроек сборки. Это будет означать, что ваше приложение будет работать только на iPhone 5S и выше. Я надеюсь, что это помогает кому-то. Спасибо!

Ответ 6

Похоже, проблема была исправлена ​​в бэкэнде iTunes Connect. После сборки 45 мы прошли вчера вечером. Попытался выяснить, что фиксировало проблему от всех этих изменений - похоже, теперь и с встроенной сборкой.

Итак, три дня я мог бы провести вне...

Ответ 7

Недавно с 26 января 2018 года Без какого-либо уведомления или анонса Apple сделал некоторые изменения, связанные с быстрым старым кодом, больше не работает с представлением приложения в магазине приложений. Я вообще не использовал CommonCrypto в моем проекте

Я также сталкиваюсь с этой проблемой, и я много разбираюсь и публикую вопрос на форумах Apple и на разных платформах о использовании непубличного API: приложение содержит один или несколько поврежденных двоичных файлов. Переустановите приложение и отправьте повторно

После того, как вы узнаете, что для такого отклонения Invalid Binary не существует единого решения. Я упоминаю некоторое возможное решение, которое работает для некоторых пользователей в последнее время.

  • Обновляйте свои cocoa -pods, если вы используете с давних времен и которые содержат некоторую быструю фреймворк или класс, начиная с Swift 2.0, а затем просто обновляйте свои cocoa -pods с поддержкой Quick 4 и целью 10.0, что ошибка уходит.
  • Один из пользователей, с которыми я разговариваю, он включает бит-код в настройках Build, и эта проблема решает для него.
  • Некоторые пользователи удаляют неиспользуемый код, класс и фреймворк, которые напрямую используются в коде без проблемы cocoa -pods, для них.
  • Для меня я получаю предупреждение в левой панели, как показано ниже.

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

  • Как только я конвертируется в swift4, я получаю следующее предупреждение:

Использование вывода Swift 3 @objc в режиме Swift 4 устарело. Пожалуйста, обращайтесь к устаревшим предупреждениям о запрете @objc, проверьте свой код с включенным протоколом "Использование устаревшего входа Swift 3 @objc", и затем отключите вывод, изменив строчку "Swift 3 @objc Inference" установите для параметра "По умолчанию" значение "appname".

  • Для устранения этого предупреждения я использую этот ответ: Использование вывода Swift 3 @objc в режиме Swift 4 устарело?

  • После этого мне нужно добавить @objc в класс swift3 class public method, который я использовал в моем классе objective-c, используя мост

  • Я также проверяю другое предупреждение в левой боковой панели, есть другое предупреждение о зависимостях приложения, которое может быть так же и helpfup для других.

Надеюсь, этот ответ может быть полезен для некоторых пользователей, которые еще не нашли ответ, и это может быть полезно.

Ответ 8

Я смог решить это для себя, вот что я сделал:

  • Биткод отключен в моем проекте и остается отключенным.
  • Я удалил 3 контейнера, один из которых был CommonCrypto, который я забыл, у меня были (другие были QRCode и SwiftyJSON).
  • Я удалил флагов Linker, а также в настройках сборки

Я надеюсь, что это поможет!

Ответ 9

Я использовал soffes/CommonCrypto с Карфагеном. Удаление CommonCrypto.framework работает для меня, и, пожалуйста, проверьте эту ссылку, как импортировать commoncryto framework: http://ioscake.com/importing-commoncrypto-in-a-swift-framework.html