Analisis API yang dihasilkan terlalu besar saat mengunggah aplikasi ke toko mac

107

Saya akan mengunggah aplikasi mac pertama saya ke Apple Store

Dan memperbaiki semua bug validasi ikon, kategori ...

Tetapi setelah itu saya lulus validasi dengan peringatan:

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.

Dan unggahan saya ditolak dengan alasan: "Invalid binary"
Adakah yang pernah mengalami kasus ini?


PEMBARUAN: peringatan ini bukan alasan penolakan, mungkin itu masalah pengarsipan aplikasi. Saya berhasil merilis aplikasi saya ke toko.

Jadi, kita bisa mengabaikannya dengan aman.

arasa
sumber
1
Bisakah Anda mengatasi masalah ini? Saya memiliki masalah yang sama dan saya tidak tahu harus berbuat apa!
nosmirck
1
Terima ini juga. Saya tidak dapat menemukan sumber di mana pun untuk secara akurat menjelaskan apa artinya?
Andrew Davis
5
Saya baru saja meningkatkan aplikasi pengiriman saya yang sangat kecil dari Swift 1.2 ke Swift 2 dan mendapatkan kesalahan ini. Tidak ada fungsi tambahan. Hal ini sebenarnya menjadi kekurangan dalam alat analisis mereka. (Ini untuk aplikasi iOS, di Xcode 7, bukan Mac store.)
Ray Fix
2
Sama seperti Ray Fix, tidak menggunakan API pribadi apa pun, cukup tingkatkan kode dari Objective-C ke swift
Jerome Diaz
1
Sama seperti di atas, tidak ada API pribadi, cukup gunakan Xcode 7 dan saya dapatkan.
DevC

Jawaban:

65

Apple melarang penggunaan API pribadi atau tidak berdokumen di aplikasi iOS. Setiap panggilan yang Anda lakukan ke metode yang memiliki nama yang sama dengan metode API pribadi atau tidak berdokumen akan ditandai sebagai penggunaan API pribadi, meskipun metode yang dipanggil adalah sesuatu yang telah Anda tentukan sendiri.

App Loader melakukan pemindaian awal, memeriksa nama metode, akses variabel instance, dan bahkan penggunaan @selector dengan nama metode pribadi. App Loader tidak selalu bekerja dengan baik, dan semakin banyak file sumber yang Anda miliki, semakin besar kemungkinannya untuk memberi Anda peringatan bahwa file analisis API yang dibuatnya "terlalu besar".

Untungnya, Anda masih bisa mengirimkan aplikasi Anda, meskipun sudah diperingatkan. Apple akan memeriksanya secara internal, dan jika sesuatu ditendang karena nama yang tumpang tindih, Anda harus melewati proses peninjauan lagi.

Erika Sadun mencoba membuat aplikasi bernama API Kit yang akan memindai untuk Anda, tetapi dia tampaknya telah meninggalkan pekerjaannya dan menghapus semua jejak aplikasi dari situsnya.

Chimp Studios membuat App Scanner untuk melakukan hal yang sama, tetapi belum diperbarui sejak 2011. Sayangnya, untuk proyek besar - dan ini termasuk proyek dengan banyak pod ekstra dari CocoaPods - tidak ada barang (2014) yang terkini cara memecahkan masalah ini selain memberi nama secara proaktif sehingga tidak akan bertentangan dengan metode API pribadi dan nama instance.

Anda secara proaktif dapat mempelajari tentang Konvensi Penamaan Kakao Apple dan mencoba mengantisipasinya. Itu akan mengurangi sakit kepala di masa depan. Namun, hingga Apple memperkenalkan sesuatu seperti ruang nama, kami mungkin terus mengalami masalah ini dari waktu ke waktu.

Kesalahan "biner tidak valid" dapat berasal dari beberapa penyebab, tetapi ini sama sekali tidak terkait dengan dokumen analisis API yang dibuat oleh App Loader.

Anda harus tahu bahwa meskipun dengan pemindaian, masih ada cara untuk menghindari larangan menggunakan API pribadi / tidak berdokumen. :)

lswank
sumber
Apakah Anda mengatakan bahwa kesalahan "terlalu besar" ini murni kesalahan label? Itu selalu menunjukkan beberapa jenis penggunaan API yang tidak valid? Bagaimana Anda membuat hubungan ini?
Chris Prince
Saya menyadari pertanyaannya adalah tentang Mac App store tetapi untuk toko aplikasi iOS, jawaban ini tidak sepenuhnya benar. Saya baru saja mendapat peringatan ini ketika mencoba memvalidasi aplikasi saya dengan Xcode 7 GM, tetapi ketika saya benar-benar mengunggahnya ke ITC dengan Xcode 7 GM, tidak ada masalah.
Chris Prince
Apa petunjuk ... yang Anda maksudkan pada kalimat terakhir Anda?
goodguys_activate
Terima kasih atas jawaban yang sangat membantu. Apakah Anda tahu di mana file Analisis API berada. Saya ingin membasmi setiap peringatan dari aplikasi saya
pengguna462990
Jadi jika iTunes Connects menunjukkan bahwa build diupload, itu berarti meskipun ada pesan kesalahan ini, apakah build berhasil? Dan yang saya lakukan sekarang adalah menunggu persetujuan mereka?
Jay
10

Setelah membahas masalah ini untuk pertama kalinya pada proyek Swift pertama saya, sepertinya jawaban paling umum untuk pertanyaan ini sekarang:

Jika Anda menggunakan Swift 2.x dan XCode 7, Anda akan mendapatkan kesalahan ini. Abaikan saja.

[PEMBARUAN: Peluncuran XCode 7.3 & iOS 9.3 tampaknya telah memperbaiki masalah ini!]

Richard
sumber
Saya menggunakan Swift 2.1 di Xcode 7.3 dan sepertinya memang demikian. Semoga mereka akan segera memperbaikinya.
Dai
jap, im juga menggunakan Swift 2.1.1 dan xCode 7.2.1 mendapatkan info ini ... saya akan memberi tahu Anda jika berhasil.
HitEmUp
1

Berikut ini cara mudah untuk mengatasinya ... simpan nama pemilih secara terbalik, seperti "dlroWolleH", lalu balikkan string sebelum Anda memanggil metode tersebut.

Jika Apple bijaksana untuk itu maka Anda dapat mengenkripsi mereka.

Mike Crawford
sumber
48
Atau Anda dapat mengikuti pedoman ulasan dan tidak menggunakan API pribadi.
Maciej Swic
Ini tidak akan menghentikan apapun. Mereka akan dapat mendeteksi jika metode dipanggil dari metode itu sendiri. Bukan dari nama pemilih yang Anda gunakan.
nada dering
2
@nicktones mungkin untuk tidak memanggil metode pribadi sampai suatu saat di masa mendatang, seperti setelah aplikasi Anda disetujui
powerj1984