2014-01-21 31 views
107

我要我的第一臺Mac的應用程序上傳到蘋果商店產生的API分析過大時,上傳應用到Mac商店

固定的圖標,類別的所有驗證錯誤...

但經過然後我通過與報警驗證:

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

你能解決這個問題?我有同樣的問題,我不知道該怎麼辦! – nosmirck

+1

也收到了這個。我無法在任何地方找到準確解釋其含義的來源? –

+0

這個較舊的答案可能有幫助。我相信最初的警告消息與錯誤無關:http://stackoverflow.com/questions/3433360/what-c​​an-cause-invalid-binary-with-no-email-followup-from-itunes-connect –

回答

65

Apple禁止在iOS應用程序中使用私人或未公開的API。即使被調用的方法是您自己定義的,您對任何與私有或未公開的API方法同名的方法的調用都將被標記爲私有API使用。

App Loader執行初始掃描,檢查方法名稱,實例變量訪問,甚至@私有方法名稱的選擇器使用情況。應用程序加載器並不總是做得很好,並且越多的源文件越有可能向您提供它生成的API分析文件的警告「太大」。

幸運的是,儘管有警告,您仍然可以提交您的應用程序。 Apple會在內部檢查它,如果由於名稱重疊而導致某些內容被踢回,則必須再次審閱審閱過程。

埃裏卡喪盾試圖讓一個應用程序調用的API工具包,會做掃描你,但她似乎已經放棄了她的工作,並移除了她的網站應用程序的任何痕跡。

Chimp工作室創建了App Scanner來做同樣的事情,但它自2011年以來一直未更新。不幸的是,對於大型項目 - 這包括來自CocoaPods的許多額外豆莢的項目 - 目前沒有2014)解決此問題的好方法,而不是主動命名事物,以免它們與私有API方法和實例名稱發生衝突。

你可以主動地瞭解蘋果的Cocoa Naming Conventions並嘗試預測。這將減少未來的頭痛。但是,直到Apple引入類似命名空間之類的東西時,我們可能會不時遇到這個問題。

「無效二進制」錯誤可以來自多種原因,但它是完全無關應用程序加載程序創建的API分析文檔。

你應該知道,即使掃描,還是有辦法繞過禁止使用私人/無證的API。 :)

+0

你是說這個「太大」的錯誤是純粹錯誤標記的錯誤?它*總是*表示某種無效的API使用情況?你是如何建立這種聯繫的? –

+0

我意識到問題是關於Mac App Store的,但對於iOS應用商店來說,這個答案並不完全正確。當我嘗試使用Xcode 7 GM驗證我的應用程序時,我剛剛發出了此警告,但是當我用Xcode 7 GM將其上傳到ITC時,出現了* no *問題。 –

+0

暗示你最後一句話的提示是什麼? – LamonteCristo

1

這裏有一個簡單的方法,讓他們身邊......在反向存儲選擇的名稱,如「dlroWolleH」,然後反轉字符串調用方法之前。

如果蘋果明智的話,那麼你可以加密它們。

+48

或者您可以按照審查指南,不使用私人API。 –

+0

這不會阻止任何事情。他們將能夠檢測方法是否從方法本身調用。不是來自您使用的選擇器名稱。 – nicktones

+2

@nicktones有可能在未來的某個時間點之前不會調用私有方法,例如在您的應用程序被批准後 – powerj1984

10

打的第一次我的第一次斯威夫特項目這個問題後,它看起來像最常見的回答這個問題現在是:

如果您使用SWIFT 2.x和XCode的7,你會得到這個錯誤。只要忽略它。

[更新:7.3的XCode的iOS & 9.3推出似乎已經解決了這個問題!]

+0

我在Xcode 7.3中使用Swift 2.1,這似乎就是這種情況。希望他們很快就會解決它。 – Dai

+0

日本,我米也使用Swift 2.1.1和xCode 7.2.1得到這個信息...我會讓你知道它是否通過。 – HitEmUp

相關問題