Полученный API-анализ слишком велик при загрузке приложения в хранилище mac

Я загружу свое первое приложение для Mac в Apple Store

И исправлены все ошибки проверки значка, категории...

Но после этого я прошел проверку с предупреждением:

The resulting API analysis file is too large. We were unable to validate your API usage prior to delivery. This is just an informational message.

И моя загрузка будет отклонена по причине: "Invalid binary"
Есть ли у кого-нибудь опыт в этом случае?


UPDATE: это предупреждение не является причиной отказа, возможно, проблема архивирования приложения. Я успешно выпустил приложение для хранения.

Итак, мы можем смело игнорировать это.

Ответ 1

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

App Loader выполняет начальное сканирование, проверяет имена методов, доступ к переменной экземпляра и даже использование @selector с именами частных методов. App Loader не всегда выполняет отличную работу, и чем больше исходных файлов, тем больше вероятность, что вы должны предупредить, что созданный им файл анализа API "слишком велик".

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

Эрика Садун попыталась создать приложение под названием API Kit, которое будет выполнять сканирование для вас, но она, похоже, отказалась от своей работы и удалила все следы приложения с ее сайта.

Студии Chimp создали App Scanner, чтобы сделать то же самое, но он не обновлялся с 2011 года. К сожалению, для крупных проектов - и это включает проекты с много дополнительных модулей от CocoaPods - нет текущего (2014) хорошего способа решения этой проблемы, кроме проактивного именования таких вещей, чтобы они не конфликтуют с частными API-методами и именами экземпляров.

Вы можете проактивно узнать об Apple Cocoa Соглашения об именах и попытаться предвидеть. Это уменьшит будущие головные боли. До тех пор, пока Apple не представит нечто вроде пространств имен, мы можем время от времени сталкиваться с этой проблемой.

Ошибка "недействительной двоичной" может быть вызвана несколькими причинами, но она полностью не связана с документом анализа API, созданным App Loader.

Вы должны знать, что даже при сканировании все еще есть способы обойти запрет на использование частных/недокументированных API.:)

Ответ 2

После первого нажатия этой проблемы в моем первом проекте Swift, похоже, наиболее распространенный ответ на этот вопрос теперь:

Если вы используете Swift 2.x и XCode 7, вы получите эту ошибку. Просто проигнорируйте это.

[UPDATE: развертывание XCode 7.3 и iOS 9.3, похоже, исправили эту проблему!]

Ответ 3

Вот простой способ обойти их... сохранить имя селектора в обратном порядке, например, "dlroWolleH", а затем перевернуть строку до вызова метода.

Если Apple поправится с этим, вы можете зашифровать их.