मैक स्टोर पर ऐप अपलोड करते समय परिणामी एपीआई विश्लेषण बहुत बड़ा है


107

मैं ऐप्पल स्टोर पर अपना पहला मैक ऐप अपलोड करने जा रहा हूं

और आइकन, श्रेणी के सभी सत्यापन कीड़े तय ...

लेकिन उसके बाद मैंने चेतावनी के साथ सत्यापन पारित किया:

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
यह भी प्राप्त किया। मुझे इसका सही अर्थ बताने के लिए कहीं भी स्रोत नहीं मिल सकता है?
एंड्रयू डेविस

5
मैंने सिर्फ स्विफ्ट 1.2 से स्विफ्ट 2 में अपने बहुत छोटे शिपिंग ऐप को अपग्रेड किया और यह त्रुटि प्राप्त की। कोई अतिरिक्त कार्यक्षमता नहीं। यह वास्तव में उनके विश्लेषण उपकरण में एक कमी हो गई है। (यह एक iOS ऐप के लिए है, Xcode 7 में, मैक स्टोर नहीं।)
Ray Fix

2
रे फिक्स के रूप में भी, किसी भी निजी एपीआई का उपयोग नहीं करते हुए, बस ऑब्जेक्टिव-सी से स्विफ्ट में कोड को अपग्रेड करना
जेरोम डियाज

1
ऊपर के समान, कोई निजी API नहीं, बस Xcode 7 का उपयोग किया गया और मुझे मिला।
देव

जवाबों:


65

Apple आईओएस ऐप्स में निजी या अनजाने एपीआई का उपयोग करने से मना करता है। आपके द्वारा कॉल की जाने वाली कोई भी विधि जिसमें निजी या अनिर्दिष्ट API विधियों के समान नाम है, को निजी API उपयोग के रूप में फ़्लैग किया जाएगा, भले ही जिस विधि को कॉल किया जा रहा हो वह कुछ है जिसे आपने स्वयं परिभाषित किया है।

ऐप लोडर एक प्रारंभिक स्कैन करता है, विधि नामों के लिए जाँच करता है, उदाहरण चर पहुंच, और यहां तक ​​कि निजी विधि नामों के साथ @ उपयोगकर्ता का उपयोग। ऐप लोडर हमेशा एक महान काम नहीं करता है, और अधिक स्रोत फ़ाइलें आपके पास अधिक संभावना है कि यह आपको चेतावनी देने के लिए है कि एपीआई विश्लेषण फ़ाइल जो उसने उत्पन्न की है वह "बहुत बड़ी" है।

चेतावनी के बावजूद, सौभाग्य से, आप अभी भी अपना आवेदन जमा कर सकते हैं। Apple इसे आंतरिक रूप से जाँच करेगा, और यदि ओवरलैपिंग नामों की वजह से कुछ वापस हो जाता है, तो आपको फिर से समीक्षा प्रक्रिया से गुजरना होगा।

एरिका सदुन ने एपीआई किट नाम की एक ऐप बनाने की कोशिश की जो आपके लिए स्कैनिंग का काम करेगी, लेकिन वह अपना काम छोड़ देती है और अपनी वेबसाइट से एप्लिकेशन के किसी भी निशान को हटा देती है।

चिंप स्टूडियो ने एक ही काम करने के लिए ऐप स्कैनर बनाया , लेकिन यह 2011 के बाद से अपडेट नहीं किया गया है। दुर्भाग्य से, बड़ी परियोजनाओं के लिए - और इसमें कोकोआपॉड से बहुत अधिक अतिरिक्त पॉड्स वाली परियोजनाएं शामिल हैं - कोई वर्तमान (2014) अच्छा नहीं है इस समस्या को हल करने के अलावा अन्य चीज़ों के नामकरण जैसे कि वे निजी एपीआई पद्धति और उदाहरण नामों के साथ संघर्ष नहीं करेंगे।

आप लगातार Apple के कोको नामकरण सम्मेलनों के बारे में जान सकते हैं और अनुमान लगाने की कोशिश कर सकते हैं। यह भविष्य के सिरदर्द को कम करेगा। जब तक Apple नामस्थान जैसी किसी चीज़ का परिचय नहीं देता, तब तक हम समय-समय पर इस समस्या में भाग लेते रहेंगे।

"अमान्य बाइनरी" त्रुटि कई कारणों से आ सकती है, लेकिन यह ऐप लोडर द्वारा बनाए गए एपीआई विश्लेषण दस्तावेज से पूरी तरह से संबंधित नहीं है।

आपको पता होना चाहिए कि स्कैनिंग के साथ, निजी / अनिर्दिष्ट एपीआई का उपयोग करने पर निषेध के आसपास अभी भी रास्ते हैं। :)


क्या आप यह कह रहे हैं कि यह "बहुत बड़ी" त्रुटि एक विशुद्ध रूप से भ्रमित त्रुटि है? यह हमेशा किसी प्रकार का अमान्य API उपयोग इंगित करता है? आपने यह संबंध कैसे बनाया है?
क्रिस प्रिंस

मुझे पता है कि सवाल मैक ऐप स्टोर के बारे में था, लेकिन आईओएस ऐप स्टोर के लिए, यह उत्तर पूरी तरह से सही नहीं है। मेरे पास बस यह चेतावनी थी जब मैंने अपने ऐप को Xcode 7 GM के साथ मान्य करने का प्रयास किया था, लेकिन जब मैंने वास्तव में इसे Xcode 7 GM के साथ ITC में अपलोड किया, तो कोई समस्या नहीं थी।
क्रिस प्रिंस

क्या संकेत है ... कि आप अपने अंतिम वाक्य पर भरोसा कर रहे हैं?
goodguys_activate

बहुत ही उपयोगी उत्तर के लिए धन्यवाद। क्या आप जानते हैं कि API विश्लेषण फ़ाइल कहाँ पाई जानी है। मैं अपने ऐप से हर चेतावनी को रूट करना चाहूंगा
user462990

तो अगर आईट्यून्स कनेक्ट दिखाता है कि बिल्ड अपलोड किया गया है, तो इसका मतलब है कि इस त्रुटि संदेश के बावजूद, यह कैसे हुआ? और अब मैं उनकी मंजूरी का इंतजार कर रहा हूं?
जय

10

मेरी पहली स्विफ्ट परियोजना पर पहली बार इस मुद्दे को मारने के बाद, यह इस सवाल का सबसे आम जवाब है:

यदि आप स्विफ्ट 2.x और XCode 7 का उपयोग करते हैं, तो आपको यह त्रुटि मिलेगी। बस इसे नजरअंदाज करें।

[अद्यतन: XCode 7.3 और iOS 9.3 रोलआउट ने इस मुद्दे को तय कर दिया है!]


मैं Xcode 7.3 में स्विफ्ट 2.1 का उपयोग कर रहा हूं और यह मामला प्रतीत होता है। उम्मीद है कि वे जल्द ही इसे ठीक कर लेंगे।
दाई

jap, im भी Swift 2.1.1 और xCode 7.2.1 का उपयोग करते हुए यह जानकारी प्राप्त करता है ... यदि यह पास है तो मैं आपको बता दूंगा।
हिटअमप

1

यहां उनके आसपास आने का एक आसान तरीका है ... चयनकर्ता का नाम "dlroWolleH" की तरह उल्टा स्टोर करें, फिर विधि को कॉल करने से पहले स्ट्रिंग को उल्टा कर दें।

यदि Apple इसके लिए समझदार है तो आप उन्हें एन्क्रिप्ट कर सकते हैं।


48
या आप समीक्षा दिशानिर्देशों का पालन कर सकते हैं और निजी एपीआई का उपयोग नहीं कर सकते हैं।
मैकीज स्विक

यह कुछ भी रोकने वाला नहीं है। वे विधि से विधि कहे जाने पर पता लगा सकेंगे। आपके द्वारा उपयोग किए जाने वाले चयनकर्ता के नाम से नहीं।
निकोटोन्स

2
@nicktones भविष्य में एक बिंदु तक निजी तरीकों को कॉल नहीं करना संभव है, जैसे कि आपके ऐप के स्वीकृत होने के बाद
powerj1984
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.