मैं यहां अपने 2 सेंट जोड़ूंगा (कम डरावने तरीके से :-))। मुझे विक्रेताओं से काफी संख्या में वसा पुस्तकालयों का सामना करना पड़ा है जो (किसी कारण से) उन्हें Frameworks
Apple द्वारा दस्तावेज के रूप में निर्देशिका में जोड़कर सामान्य तरीके से काम नहीं करते हैं । जिस तरह से हम उन्हें काम करने में सक्षम .framekwork
करते हैं, वह प्रोजेक्ट डायरेक्टरी में राइट को खींचकर Embedded Frameworks
और Link Binary with Libraries
मैन्युअल रूप से बिल्ड सेटिंग्स में लिंक करके है । ऐसा लगता है कि किसी भी मुद्दे के बिना काम किया है, हालांकि, किसी भी मोटे पुस्तकालय के रूप में वे बाहरी सिम्युलेटर आर्किटेक्चर के साथ i386
और x86_64
साथ आते हैंarm
आर्किटेक्चर।
वसा पुस्तकालय पर आर्किटेक्चर की जांच करने का एक त्वरित तरीका है
$ cd 'Project_dir/Project'
$ lipo -info 'YourLibrary.framework/YourLibExec`
जिसे कुछ इस तरह से आउटपुट देना चाहिए
Architectures in the fat file: YourLibrary.framework/YourLibExec are: i386 x86_64 armv7 arm64
यह पुष्टि करता है कि आपको "वसा को ट्रिम" करने की आवश्यकता होगी (अर्थात् i386
&x86_64
iTunesConnect अभिलेखीय अपलोड से पहले आपको अपने ढांचे से ) , जो इन आर्किटेक्चर को अनुमति नहीं देता है (क्योंकि वे iOS के लिए असमर्थित हैं)।
अब, सभी उत्तर (या कुछ उत्तरों में से कम से कम) यहां इन अद्भुत रन लिपियों को प्रदान करते हैं कि मुझे यकीन है कि वास्तव में अच्छी तरह से काम करता है, लेकिन केवल अगर आपका फ्रेमवर्क Frameworks
निर्देशिका में रहता है । अब जब तक आप एक शेल स्क्रिप्ट रद्दी नहीं हैं, उन लिपियों में बिना किसी संशोधन के, मैं ऊपर बताए गए परिदृश्य के लिए काम नहीं करूंगा। हालांकि, ढांचे से i386
& x86_64
आर्किटेक्चर से छुटकारा पाने का एक बहुत ही सरल तरीका है ।
अपनी परियोजना की निर्देशिका में टर्मिनल खोलें।
निर्देशिका को सीधे में बदलें .framekwork
, जैसे
cd YourProjectDir/YourProject/YourLibrary.framework
नीचे दिखाए अनुसार आदेशों की श्रृंखला चलाएं-
$ mv YourLibrary YourLibrary_all_archs
$ lipo -remove x86_64 YourLibrary_all_archs -o YourLibrary_some_archs
$ lipo -remove i386 YourLibrary_some_archs -o YourLibrary
$ rm YourLibrary_all_archs YourLibrary_some_archs
यहां ध्यान देने योग्य कुछ बातें - lipo -remove
प्रत्येक वास्तुकला को हटाने के लिए एक बार किया जाना चाहिए। lipo
इनपुट फ़ाइल को संशोधित नहीं करता है, यह केवल एक फ़ाइल का उत्पादन करता है ताकि आपको lipo -remove
एक बार के लिए x86_64
और चलना पड़े i386
। ऊपर दिए गए आदेश बस ऐसा कर रहे हैं कि पहले निष्पादन योग्य का नाम बदलकर और फिर अंत में वांछित आर्क को हटा दें, और फिर फाइलों पर बाईं ओर सफाई करें। और यह बात है, अब आपको iTunesConnect पर एप्लिकेशन लोडर अभिलेखीय अपलोड में एक हरे रंग की जांच चिह्न देखना चाहिए।
ध्यान रखने योग्य बातें : उपरोक्त कदमों का निर्माण उत्पादन करते समय ही किया जाना चाहिए, क्योंकि .framework
सिम्युलेटर आर्किटेक्ट्स से वसीयत छीन ली जाएगी, सिमुलेटरों पर निर्माण काम करना बंद कर देगा (जो अपेक्षित है)। विकास के माहौल में, .framework
फ़ाइल के आर्किटेक्चर को बंद करने की आवश्यकता नहीं होनी चाहिए क्योंकि आप सिम्युलेटर और भौतिक उपकरण दोनों पर परीक्षण करना चाहते हैं। यदि आपका मोटा पुस्तकालय Frameworks
प्रोजेक्ट में फ़ोल्डर में रहता है, तो कृपया स्वीकृत उत्तर देखें।