Uygulamayı mac mağazasına yüklerken ortaya çıkan API analizi çok büyük


107

İlk mac uygulamamı Apple Store'a yükleyeceğim

Ve simge, kategori ...

Ancak ondan sonra, bir uyarı ile doğrulamayı geçtim:

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.

Ve yüklemem şu sebeple reddedilecek: "Geçersiz ikili"
Bu vakayla ilgili deneyimi olan var mı?


GÜNCELLEME: Bu uyarı reddetme nedeni değil, uygulama arşivleme sorunu olabilir. Uygulamamı depolamak için başarıyla yayınladım.

Yani bunu güvenle görmezden gelebiliriz.


1
Bu sorunu çözebilir misin? Bende de aynı sorun var ve ne yapacağımı bilmiyorum!
nosmirck

1
Bunu da aldım. Ne anlama geldiğini doğru bir şekilde açıklayacak bir kaynak bulamıyorum?
Andrew Davis

5
Swift 1.2'den Swift 2'ye çok küçük gönderim uygulamamı yükselttim ve bu hatayı aldım. Ek işlev yok. Bu, analiz araçlarında hemen hemen bir eksiklik olmalı. (Bu, Mac mağazasında değil, Xcode 7'deki bir iOS uygulaması içindir.)
Ray Fix

2
Ray Fix ile aynı, herhangi bir özel API kullanmadan, sadece Objective-C'den hızlı bir kod yükseltme
Jerome Diaz

1
Yukarıdaki ile aynı, özel API yok, sadece Xcode 7 kullandım ve aldım.
DevC

Yanıtlar:


65

Apple, iOS uygulamalarında özel veya belgelenmemiş API'lerin kullanılmasını yasaklar. Özel veya belgelenmemiş API yöntemleriyle aynı adı taşıyan yöntemlere yaptığınız tüm çağrılar, çağrılan yöntem sizin tanımladığınız bir şey olsa bile özel API kullanımı olarak işaretlenecektir.

Uygulama Yükleyici, yöntem adlarını, örnek değişken erişimini ve hatta özel yöntem adlarıyla @selector kullanımını kontrol ederek bir başlangıç ​​taraması yapar. Uygulama Yükleyici her zaman harika bir iş çıkarmaz ve ne kadar çok kaynak dosyanız olursa, oluşturduğu API analiz dosyasının "çok büyük" olduğu konusunda size uyarı verme olasılığı o kadar artar.

Neyse ki, uyarıya rağmen başvurunuzu yine de gönderebilirsiniz. Apple bunu dahili olarak kontrol edecek ve çakışan isimler nedeniyle bir şey geri çevrilirse, gözden geçirme sürecinden tekrar geçmeniz gerekecek.

Erika Sadun, sizin için taramayı yapacak API Kiti adında bir uygulama yapmaya çalıştı, ancak işini bırakmış ve uygulamanın herhangi bir izini web sitesinden kaldırmış gibi görünüyor.

Chimp Studios aynı şeyi yapmak için App Scanner'ı yarattı , ancak 2011'den beri güncellenmedi. Ne yazık ki, büyük projeler için - ve bu CocoaPod'lardan çok sayıda ekstra kapsülü olan projeleri de içeriyor - şu anda (2014) iyi bir şey yok özel API yöntemi ve örnek adlarıyla çakışmayacak şekilde şeyleri proaktif olarak adlandırmaktan başka bu sorunu çözmenin bir yolu.

Apple'ın Kakao Adlandırma Kuralları hakkında proaktif olarak bilgi edinebilir ve tahmin etmeye çalışabilirsiniz. Bu gelecekteki baş ağrılarını azaltacaktır. Ancak Apple ad alanları gibi bir şey sunana kadar, zaman zaman bu sorunla karşılaşmaya devam edebiliriz.

"Geçersiz ikili" hatası bir dizi nedenden kaynaklanabilir, ancak bu, Uygulama Yükleyici tarafından oluşturulan API analiz belgesiyle tamamen ilgisizdir.

Tarama sırasında bile, özel / belgelenmemiş API'leri kullanma yasağını aşmanın yolları olduğunu bilmelisiniz. :)


Bu "çok büyük" hatanın tamamen yanlış etiketlenmiş bir hata olduğunu mu söylüyorsunuz? Her zaman bir tür geçersiz API kullanımını gösterdiğini mi? Bu bağlantıyı nasıl kurdunuz?
Chris Prince

Sorunun Mac App Store ile ilgili olduğunu fark ettim, ancak iOS uygulama mağazası için bu cevap tam olarak doğru değil. Uygulamamı Xcode 7 GM ile doğrulamaya çalıştığımda bu uyarıyı aldım, ancak Xcode 7 GM ile ITC'ye yüklediğimde hiçbir sorun olmadı .
Chris Prince

Son cümlenizde ... ima ettiğiniz ipucu nedir?
goodguys_activate

Çok faydalı bir cevap için teşekkür ederim. API Analiz dosyasının nerede bulunacağını biliyor musunuz? Uygulamamdan gelen her uyarıyı kökten kaldırmak istiyorum
user462990

Öyleyse iTunes Bağlantıları yapının yüklendiğini gösteriyorsa, bu, bu hata mesajına rağmen devam ettiği anlamına mı geliyor? Ve şimdi tek yaptığım onların onayını beklemek mi?
Jay

10

İlk Swift projemde bu konuya ilk kez değindikten sonra, bu sorunun en yaygın cevabı şu an gibi görünüyor:

Swift 2.x ve XCode 7 kullanıyorsanız, bu hatayı alırsınız. Görmezden gel.

[GÜNCELLEME: XCode 7.3 ve iOS 9.3'ün kullanıma sunulması bu sorunu çözmüş görünüyor!]


Swift 2.1'i Xcode 7.3'te kullanıyorum ve durum böyle görünüyor. Umarım yakında düzeltirler.
Dai

jap, ben de Swift 2.1.1 ve xCode 7.2.1 kullanıyorum bu bilgiyi al ... geçerse size haber vereceğim.
HitEmUp

1

İşte bunlardan kurtulmanın kolay bir yolu ... seçici adını "dlroWolleH" gibi tersten saklayın, ardından yöntemi çağırmadan önce dizeyi tersine çevirin.

Apple akıllıca davranırsa, onları şifreleyebilirsiniz.


48
Veya inceleme yönergelerini takip edebilir ve özel API kullanamazsınız.
Maciej Swic

Bu hiçbir şeyi durdurmayacak. Yöntemin, yöntemin kendisinden çağrılıp çağrılmadığını tespit edebileceklerdir. Kullandığınız seçici adından değil.
nicktones

2
@nicktones özel yöntemleri gelecekte bir noktaya kadar çağırmamak mümkündür, örneğin uygulamanız onaylandıktan sonra
powerj1984
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.