アプリをMacストアにアップロードすると、結果のAPI分析が大きすぎます


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
この問題を解決できますか?私は同じ問題を抱えており、何をすべきかわかりません!
nosmirck 2014年

1
これも受け取りました。それが何を意味するのかを正確に説明するためのソースがどこにも見つかりませんか?
Andrew Davis

5
非常に小さな出荷用アプリをSwift 1.2からSwift 2にアップグレードしたところ、このエラーが発生しました。追加機能はありません。これは、実際には彼らの分析ツールの欠点になるはずです。(これは、Macストアではなく、Xcode 7のiOSアプリ用です。)
Ray Fix

2
Ray Fixと同じ、プライベートAPIを使用せず、コードをObjective-CからSwiftにアップグレードするだけ
Jerome Diaz

1
上記と同じように、プライベートAPIはなく、Xcode 7を使用しただけで取得しました。
DevC

回答:


65

AppleはiOSアプリでプライベートまたはドキュメントに記載されていないAPIを使用することを禁止しています。呼び出されているメソッドが自分で定義したものであっても、プライベートまたはドキュメントに記載されていないAPIメソッドと同じ名前のメソッドを呼び出すと、プライベートAPIの使用としてフラグが付けられます。

App Loaderは初期スキャンを実行し、メソッド名、インスタンス変数のアクセス、さらにプライベートメソッド名での@selectorの使用をチェックします。App Loaderは常に優れた機能を発揮するわけではなく、ソースファイルが多いほど、生成したAPI分析ファイルが「大きすぎる」という警告が表示される可能性が高くなります。

幸いにも、警告にもかかわらず、アプリケーションを提出することができます。Appleが内部でチェックし、名前が重複しているために何かが取り消された場合は、レビュープロセスをもう一度繰り返す必要があります。

エリカサドゥンは、スキャンを実行するAPIキットと呼ばれるアプリを作成しようとしましたが、彼女は自分の作業を放棄し、ウェブサイトからアプリケーションの痕跡をすべて削除したようです。

Chimp Studiosが作成したApp Scannerは、同じことを行うためにをましたが、2011年以降は更新されていません。残念ながら、大規模なプロジェクトの場合、これにはCocoaPodsからの追加のポッドが多数含まれるプロジェクトが含まれます-現在の(2014)の良いものはありませんプライベートAPIメソッドやインスタンス名と競合しないように積極的に名前を付ける以外に、この問題を解決する方法。

AppleのCocoa命名規則について積極的に学び、予想することができます。それは将来の頭痛を減らすでしょう。ただし、Appleが名前空間のようなものを導入するまでは、この問題が発生する可能性があります。

「無効なバイナリ」エラーはさまざまな原因で発生する可能性がありますが、App Loaderによって作成されたAPI分析ドキュメントとはまったく関係ありません。

スキャンしても、プライベート/ドキュメント化されていないAPIの使用禁止を回避する方法はまだあります。:)


この「大きすぎる」エラーは、誤ってラベルが付けられたエラーだと言っていますか?それは常にある種の無効なAPIの使用を示しているのですか?どのようにしてこのつながりを作りましたか?
Chris Prince、

問題はMac App Storeに関するものだったと思いますが、iOS App Storeの場合、この答えは完全に正しくありません。Xcode 7 GMを使用してアプリを検証しようとしたときにこの警告が表示されましたが、実際にXcode 7 GMを使用してITCにアップロードしたところ問題はありませんでした
Chris Prince

ヒントは何ですか...最後の文を暗示するつもりですか?
goodguys_activate 2015年

非常に役立つ回答をありがとうございます。API分析ファイルの場所を知っていますか。アプリからのすべての警告を根絶したいと思います
user462990 '29

iTunes Connectsがビルドがアップロードされていることを示している場合、つまり、このエラーメッセージが表示されても、ビルドは完了しましたか?そして私が今しているのは彼らの承認を待つことだけですか?
Jay

10

私の最初のSwiftプロジェクトでこの問題に初めて遭遇した後、この質問に対する最も一般的な答えは今です:

Swift 2.xおよびXCode 7を使用している場合、このエラーが発生します。無視してください。

[更新:XCode 7.3およびiOS 9.3のロールアウトでこの問題が修正されたようです!]


Xcode 7.3でSwift 2.1を使用していますが、これはそうです。うまくいけば、すぐに修正されるでしょう。
2016年

jap、私もSwift 2.1.1とxCode 7.2.1を使用してこの情報を取得しています...合格した場合は通知します。
HitEmUp 2016年

1

ここにそれらを回避する簡単な方法があります...セレクター名を「dlroWolleH」のように逆に保存し、メソッドを呼び出す前に文字列を逆にします。

Appleが賢明なら、暗号化できます。


48
または、レビューガイドラインに従って、プライベートAPIを使用しないこともできます。
Maciej Swic 2015年

これは何も停止しません。メソッド自体からメソッドが呼び出されたかどうかを検出できます。使用するセレクター名からではありません。
ニックトーン2015

2
@nicktonesアプリが承認された後など、将来のある時点までプライベートメソッドを呼び出せない可能性があります
powerj1984
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.