ios - लाइब्रेरी? स्टेटिक? गतिशील? या फ्रेमवर्क? एक और परियोजना के अंदर परियोजना




xcode frameworks (2)

मेरे पास एक मौजूदा आईओएस ऐप है और मैं कोड का एक बड़ा हिस्सा जोड़ना चाहता हूं जिसे मैं परीक्षण की आसानी के लिए एक और प्रोजेक्ट के रूप में विकसित कर रहा हूं। नया हिस्सा मूल रूप से विभिन्न साझाकरण सेवाओं आदि को एक छवि सहेजने से संबंधित है .. क्योंकि साझाकरण कोड को बहुत सारे परीक्षण और भविष्य में अद्यतन करने की आवश्यकता है, इसलिए मैं सोच रहा था कि मेरे मौजूदा ऐप में कोड कोड को शामिल करने का सबसे अच्छा तरीका क्या है।

मुझे नहीं पता कि यह एक स्थिर पुस्तकालय, गतिशील पुस्तकालय या ढांचा होना चाहिए, और ईमानदारी से, मुझे सच में यकीन नहीं है कि अंतर क्या है, या मुझे इसके बारे में कैसे जाना चाहिए और इसे एक्सकोड में स्थापित करना चाहिए।

मुझे पता है कि मुझे शेयरिंग कोड के लिए अलग परीक्षण और ऐप अपडेट करना है और मुख्य ऐप इसका उपयोग करना है।

यदि आप पहले से ही नहीं बता सकते हैं, तो मैं एक गिट विज़ नहीं हूं। मैं बस एक साधारण एक आदमी डेवलपर हूँ।

किसी भी मदद या दिशा की सराहना की जाएगी। धन्यवाद!


आप CocoaPods ( http://guides.cocoapods.org/making/private-cocoapods.html#1.-create-a-private-spec-repo ) के लिए .podspec फ़ाइल भी बना सकते हैं और इसे किसी अन्य फोड की तरह उपयोग कर सकते हैं केवल अंतर यह है कि यह आपकी निजी फली है और बाहरी दुनिया के लिए दृश्यमान नहीं है (मुझे यकीन नहीं है कि क्या होगा यदि आपके पॉड को कोरडाटा मॉडल बनाना चाहिए, लेकिन ऐसा नहीं है, जैसा कि मैं समझता हूं)।


सबसे पहले, कुछ सामान्य परिभाषाएं (आईओएस के लिए विशिष्ट):

स्टेटिक लाइब्रेरी - संकलन समय पर जुड़े कोड की एक इकाई, जो नहीं बदली जाती है।

हालांकि, आईओएस स्थिर पुस्तकालयों में छवियों / संपत्तियों (केवल कोड) रखने की अनुमति नहीं है । हालांकि आप मीडिया बंडल का उपयोग कर इस चुनौती के आसपास हो सकते हैं।

विकिपीडिया पर एक बेहतर, अधिक औपचारिक परिभाषा पाई जा सकती here

गतिशील पुस्तकालय - रनटाइम पर जुड़े कोड और / या संपत्तियों की एक इकाई जो बदल सकती है।

हालांकि, केवल ऐप्पल को आईओएस के लिए गतिशील पुस्तकालय बनाने की अनुमति है। आपको इन्हें बनाने की अनुमति नहीं है, क्योंकि इससे आपका ऐप खारिज हो जाएगा। ( this तरह की पुष्टि और तर्क के लिए this अन्य एसओ पोस्ट देखें)।

सॉफ़्टवेयर फ्रेमवर्क - कोड का एक संकलित सेट जो कार्य पूरा करता है ... इसलिए, आप वास्तव में एक स्थिर ढांचा या गतिशील ढांचा बना सकते हैं , जो आमतौर पर उपरोक्त के संकलित संस्करण होते हैं।

अधिक जानकारी के लिए सॉफ़्टवेयर फ्रेमवर्क पर विकी देखें।

इसलिए आईओएस पर, आपका एकमात्र विकल्प मूल रूप से स्थिर पुस्तकालय या स्थैतिक ढांचे का उपयोग करना है (मुख्य अंतर यह है कि एक स्थिर ढांचा को संकलित। .a फ़ाइल के रूप में वितरित किया जाता है, जबकि एक स्थिर पुस्तकालय को केवल उपप्रोजेक्ट के रूप में शामिल किया जा सकता है - आप सभी कोड देख सकते हैं - जिसे पहले संकलित किया गया है और इसके परिणामस्वरूप .a फ़ाइल प्रोजेक्ट द्वारा निर्भरता के रूप में उपयोग की जाती है)।

अब जब हम इन शर्तों पर स्पष्ट (एर) हैं, आईओएस के लिए स्थिर लाइब्रेरी और सहायक मीडिया बंडल स्थापित करना बहुत मुश्किल नहीं है, और इस तरह के तरीके पर कई ट्यूटोरियल हैं। मैं व्यक्तिगत रूप से इस की सिफारिश करता हूं:

https://github.com/jverkoey/iOS-Framework

यह एक बहुत सीधी-आगे की मार्गदर्शिका है और "नकली स्थैतिक पुस्तकालयों" से निपटने का नुकसान नहीं है ... अधिक जानकारी के लिए इसे देखें ...

एक बार जब आप अपनी स्थिर लाइब्रेरी बना लेते हैं, तो इसे विभिन्न परियोजनाओं में उपयोग के लिए गिट के भीतर एक सबमिशन के रूप में शामिल करना उतना ही आसान है।

शुभ लाभ।

संपादित करें

एक परियोजना के भीतर एक उपप्रोजेक्ट के बारे में, जहां तक ​​मुझे पता है, इसे सही तरीके से काम करने / संकलित करने के लिए, आपको अनिवार्य रूप से एक संकलन श्रृंखला स्थापित करना है जहां सबप्रोजेक्ट पहले संकलित किया गया है, जो स्थिर फ्रेमवर्क बनाता है। एक फ़ाइल जिसका उपयोग किया जाता है परियोजना द्वारा निर्भरता।

यहां एक और उपयोगी ट्यूटोरियल है जो इस बारे में बात करता है:

http://www.cocoanetics.com/2011/12/sub-projects-in-xcode/

संपादित करें 2

आईओएस 8 के रूप में, ऐप्पल अब डेवलपर्स को गतिशील ढांचे बनाने की अनुमति देता है! (नोट: गतिशील ढांचे को शामिल करने के लिए आपके ऐप में आईओएस 8 का न्यूनतम लक्ष्य होना चाहिए ... बैक पोर्टिंग की अनुमति नहीं है।)

इसे एक नया प्रोजेक्ट टेम्पलेट के रूप में जोड़ा गया है। एक्सकोड 6.1 में, यह यहां पाया जा सकता है:

New Project -> iOS -> Framework & Library -> Cocoa Touch Framework




static-libraries