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

Я действительно разочаровываю, что происходит с загрузкой новой версии приложения iOS. Вот история.

В день 25 января 2018 года мы загрузили новую версию 3.3.27 build number 1.0. Это успешно обрабатывается и доступно на тестовом полете для тестирования. После этого мы обнаружили некоторую проблему и на 26 января 2018 года мы исправим ее и загрузили новую версию 1.1, и мы получаем электронную почту от iTunes Connect:

Уважаемый разработчик,

Мы обнаружили одну или несколько проблем с вашей недавней доставкой для "appname". Для обработки вашей доставки необходимо устранить следующие проблемы:

Использование не публичного API:

The app contains one or more corrupted binaries. Rebuild the app and resubmit.

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

Если вы считаете, что это сообщение отправлено с ошибкой и что у вас есть только использовали опубликованные Apple API в соответствии с руководящими принципами, отправили приложение с девятью цифрами Apple ID, а также подробную информацию о том, почему вы полагаете, что вышеуказанные API были неправильно помечены, чтобы [email protected] Для получения дополнительной информации посетите

Пока я проверяю сборку перед загрузкой ее успеха:

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

Пока я загружаю приложение, я получаю следующий успех:

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

В почте я не получил правильную информацию о том, что имя поврежденного двоичного файла или фреймворка. Какой метод мы использовали, что непубличная мы загрузили сборку обновлений 100s этого приложения до 25 января, все хорошо и приемлемо.

Затем я попытаюсь выполнить следующие изменения:

  • Перестроить приложение и отправить снова получите тот же адрес электронной почты.
  • Удалить Xcode9.2 и установить снова получить тот же адрес электронной почты.
  • Удалить изменения и загрузить номер сборки 1.0 снова получить тот же адрес электронной почты.
  • Измените Mac и попробуйте загрузить новую сборку с тем же адресом электронной почты.
  • Попробуйте загрузить старую версию, которая будет жить до и после того же самого emai

Мы отправили электронное письмо в iTunes Connect Review, но с 3 дней мы не получили ответа от них. Я занимаюсь исследованиями, и с 26 января многие пользователи сталкиваются с такой проблемой при подаче заявки.

Если кто-то знает это решение, которое сталкивается с такой проблемой в прошлом или недавно, пожалуйста, помогите нам

Ответ 1

В этом вопросе нет ни одного решения. Apple не упоминает ничего сейчас о днях об ошибках или недопустимых бинарных новостях на их официальной учетной записи или форумах или на официальном сайте разработчиков. Даже они не отвечают на ваш адрес электронной почты.

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

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

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

Я думаю, что яблоко теперь удалило быструю быструю поддержку, поэтому в случае, если ваш проект использует какой-либо быстрый класс или podfile, нам нужно обновить до версии 4.

Как только я конвертирую в быстрый 4, я получаю следующее предупреждение:

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

Для устранения этого предупреждения я использую следующую ссылку Использование вывода Swift 3 @objc в режиме Swift 4 устарело?, а в классе swift я использовал @objc перед публикацией декларация.

Также я просматриваю весь исходный код и удаляю неиспользуемую библиотеку podfile и class из проекта.

выше, я исправляю эту проблему и после загрузки 13-го из построенных, наконец, принятых.

Ответ 2

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

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

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

Спасибо и счастливое кодирование!

Ответ 3

Мы нашли 2 решения проблемы. Удалите 32-разрядную поддержку, о чем говорилось выше. И удалите использование CommonCrypto. Мы заменили CommonCrypto на CryptoSwift (https://github.com/krzyzanowskim/CryptoSwift).

Мы решили заменить CommonCrypto, поскольку мы не хотели потерять наших 32-битных пользователей (iPhone4S, 5 и 5C).