Отриманий аналіз API занадто великий при завантаженні програми в магазин Mac


107

Я збираюся завантажити свій перший додаток для 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.

І моє завантаження буде відхилено із причиною: "Недійсний бінарний файл"
Чи є у когось досвід цієї справи?


ОНОВЛЕННЯ: це попередження не є причиною відхилення, можливо, проблема з архівуванням програми. Я успішно випустив додаток для зберігання.

Отже, ми можемо сміливо ігнорувати це.


1
Не могли б ви вирішити цю проблему? У мене така ж проблема, і я не знаю, що робити!
носмірк

1
Отримали і це. Я ніде не можу знайти джерело, щоб точно пояснити, що це означає?
Ендрю Девіс

5
Я щойно оновив свою дуже маленьку програму доставки з Swift 1.2 до Swift 2 і отримав цю помилку. Без додаткових функціональних можливостей. Це, мабуть, насправді є недоліком у їхньому інструменті аналізу. (Це для програми iOS у Xcode 7, а не в магазині Mac.)
Ray Fix

2
Те саме, що і Ray Fix, не використовуючи жодного приватного API, просто оновивши код від Objective-C до швидкого
Jerome Diaz

1
Як і вище, жодних приватних API, щойно використано Xcode 7 і я отримав.
DevC

Відповіді:


65

Apple забороняє використовувати приватні або незадокументовані API в додатках iOS. Будь-які виклики, які ви здійснюєте до методів, що мають те саме ім'я, що і приватні або недокументовані методи API, будуть позначені як використання приватного API, навіть якщо метод, який викликається, - це те, що ви самі визначили.

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

На щастя, ви все одно можете подати заявку, незважаючи на попередження. Apple перевірить це всередині країни, і якщо щось буде відкинуто через накладення назв, вам доведеться пройти процес перегляду ще раз.

Еріка Садун намагалася зробити додаток під назвою API Kit, який би зробив сканування для вас, але, схоже, вона відмовилася від своєї роботи та видалила будь-які сліди програми зі свого веб-сайту.

Chimp Studios створили сканер додатків, щоб зробити те ж саме, але він не оновлювався з 2011 року. На жаль, для великих проектів - і це включає проекти з великою кількістю зайвих стручків від CocoaPods - поточного (2014 року) немає спосіб вирішити цю проблему, окрім проактивного іменування речей таким чином, щоб вони не суперечили приватним методам API та іменам екземплярів.

Ви можете активно дізнаватися про конвенції про назву какао Apple і намагатися передбачити. Це зменшить майбутні головні болі. Поки Apple не представить щось подібне до просторів імен, ми можемо час від часу стикатися з цією проблемою.

Помилка "недійсної бінарної" може виникнути з ряду причин, але вона повністю не пов'язана з документом аналізу API, створеним App Loader.

Ви повинні знати, що навіть при скануванні все ще існують способи подолати заборону на використання приватних / недокументованих API. :)


Ви хочете сказати, що ця "занадто велика" помилка є чисто помилковою помилкою? Що це завжди вказує на якесь недійсне використання API? Як ви встановили це з'єднання?
Кріс-принц

Я усвідомлюю, що питання стосувалося магазину додатків Mac, але для магазину додатків для iOS ця відповідь не зовсім коректна. Я тільки що це попередження , коли я спробував перевірити моє додаток з Xcode 7 GM, але коли я фактично завантажив його КВТ з Xcode 7 GM, не було жодної проблеми.
Кріс-принц

Який натяк ... що ви маєте на увазі у своєму останньому реченні?
goodguys_activate

Дякую за дуже корисну відповідь. Чи знаєте ви, де слід знайти файл аналізу API. Я хотів би викорінити кожне попередження з мого додатка
user462990

Отже, якщо iTunes Connects показує, що збірка завантажена, це означає, що незважаючи на це повідомлення про помилку, воно все-таки пройшло? І все, що я зараз роблю, - це чекати їх затвердження?
Джей

10

Коли я вперше потрапив у цю проблему на моєму першому проекті Swift, схоже, що найпоширеніша відповідь на це питання зараз:

Якщо ви використовуєте Swift 2.x та XCode 7, ви отримаєте цю помилку. Просто ігноруйте це.

[ОНОВЛЕННЯ: Розробка XCode 7.3 та iOS 9.3, схоже, вирішили цю проблему!]


Я використовую Swift 2.1 в Xcode 7.3, і, здається, це так. Сподіваємось, вони скоро це виправлять.
Дай

jap, я також використовуючи Swift 2.1.1 та xCode 7.2.1, отримайте цю інформацію ... я дам вам знати, якщо вона пройде.
HitEmUp

1

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

Якщо Apple до цього придумає, ви можете зашифрувати їх.


48
Або ви можете дотримуватися рекомендацій щодо огляду та не використовувати приватний API.
Maciej Swic

Це нічого не зупинить. Вони зможуть виявити, якщо метод викликається із самого методу. Не від імені селектора, який ви використовуєте.
nicktones

2
@nicktones приватними методами можна не зателефонувати до певного моменту, наприклад після затвердження вашої програми
powerj1984
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.