बेस SDK, iOS परिनियोजन लक्ष्य, लक्ष्य और प्रोजेक्ट का xcode में क्या अर्थ है


161

कहो मैं आधार SDK को 7 पर सेट करता हूं, इसका क्या मतलब है? इसका मतलब यह हो सकता है कि ऐप iOS 7 पर चलेगा। लेकिन यह है कि iOS परिनियोजन लक्ष्य क्या है।

इसके अलावा, मैं उन 3 मूल्यों को परियोजना और लक्ष्य दोनों में क्यों निर्दिष्ट करता हूं। इसका कोई मतलब नहीं है। एक ही बात को दो बार क्यों निर्दिष्ट करें?


एक और नए प्रश्न पर इसका एक अच्छा संक्षिप्त जवाब है: stackoverflow.com/a/41278576/498949
क्रिस राय

जवाबों:


79

आधार एसडीके वह है जो आप अपने ऐप को (यानी शामिल और लाइब्रेरी फ़ाइलों और फ्रेमवर्क) के खिलाफ बनाते हैं। जैसा कि आप कहते हैं, यह आधार sdk> = परिनियोजन लक्ष्य को छोड़कर परिनियोजन लक्ष्य को प्रभावित नहीं करता है।

आप 2 स्तरों पर निर्माण सेटिंग्स निर्दिष्ट करते हैं क्योंकि प्रत्येक परियोजना में कई लक्ष्य हो सकते हैं और आप सभी लक्ष्यों के लिए समान सेटिंग्स नहीं चाहते हैं। प्रोजेक्ट-स्तर सेटिंग्स डिफ़ॉल्ट सेटिंग्स को ओवरराइड करती हैं और लक्ष्य-स्तरीय सेटिंग्स प्रोजेक्ट-स्तर सेटिंग्स को ओवरराइड करती हैं।

उदाहरण के लिए मेरे पास OSX और iOS दोनों लक्ष्य हैं और कुछ ARC हैं और कुछ MRR हैं। यदि मैं Xcode की अनुमति देता है तो मैं ग्रैन्युलैरिटी के स्तर के साथ सेटिंग्स को निर्दिष्ट करने में असमर्थ था, तो मुझे प्रत्येक के लिए अलग-अलग प्रोजेक्ट्स करने होंगे।


196

में iOS 7 TechTalk , सत्र Architecting आधुनिक ऐप्स, भाग 2, वे यह स्पष्ट रूप से समझाने

यहां छवि विवरण दर्ज करें

अच्छा पढ़ें हाय! मैँ मौजूद हुँ!

इसलिए, एक आधुनिक ऐप आईओएस 9 को लक्ष्य एसडीके, और आईओएस 7 को तैनाती लक्ष्य के रूप में उपयोग कर सकता है। इसका मतलब है कि आप iOS 7, iOS 8 और iOS 9 पर चल सकते हैं, और यह कि आपके पास किसी भी iOS 9 कॉल के लिए उपलब्ध है जब वास्तव में iOS 9 पर चल रहा है।

आप मेरी पोस्ट SDK और परिनियोजन लक्ष्य में अधिक पढ़ सकते हैं


20
अच्छा संदर्भ .. और यह हिस्सा इस 50 मिनट के वीडियो में लगभग 25:17 पर दफन है।
डैनियल

2
अच्छा! लेकिन अगर आप बेस एसडीके = 7.0 सेट करते हैं और आप iOS 8.0 में इंस्टॉल करने की कोशिश करते हैं तो क्या होगा? क्या हमें हर समय नवीनतम बेस एसडीके का समर्थन करने के लिए अंतिम एक्सकोड डाउनलोड करना होगा?
14

1
@GoRoS आपके ऐप का समर्थन नहीं किया जाएगा यदि आधारित sdk है <iOS 8 (उपयोगकर्ता ऐप स्टोर से इंस्टॉल नहीं कर सकते हैं)। चूंकि UIKit / Foundation गतिशील लाइब्रेरी है, अगर Xcode या बाइनरी चीजों के माध्यम से मजबूर किया जाता है, तो यह काम कर सकता है, लेकिन ऐप कभी भी क्रैश हो सकता है और आमतौर पर अस्थिर होता है। बेस एसडीके हमेशा संबंधित एक्सकोड संस्करण के साथ जाता है। हालांकि, Xcode के लिए बेस एसडीके सिम्युलेटर के लिए है जो डिवाइस पर एक अलग हो सकता है। तो इससे पहले कि आप जहाज पर असली डिवाइस पर चीजों का परीक्षण करना महत्वपूर्ण है। सभी गतिशील पुस्तकालयों के साथ यही समस्या है।
कुणाल बलानी

2
@chichilatte नहीं, आपको जरूरत नहीं है। एप्लिकेशन अभी भी iOS 12, iOS 13 का समर्थन करता है, ... लेकिन इसमें iOS 12, iOS 13 की कोई नई सुविधाएँ नहीं होंगी .... iOS 12 की नई सुविधा का उपयोग करने के लिए, आपको iOS 12 SDK के विरुद्ध संकलन और उपयोग करने की आवश्यकता है IOS 12 से एपीआई
onmyway133

2
धन्यवाद, यह समझ में आता है। मुझे लगता है कि @ कुणाल-बलानी की टिप्पणी गलत है।
चिचिलेट्टे

67

आधार एसडीके वह एसडीके है जिसके खिलाफ आप लिंक करते हैं। परिनियोजन लक्ष्य न्यूनतम आवश्यक iOS संस्करण है जिसे आपको चलाने की आवश्यकता है। आप SDK 7 के साथ एक एप्लिकेशन बना सकते हैं जो iOS 6 के तहत चलता है। लेकिन आपको इस बात का ध्यान रखना होगा कि आप iOS 6 पर उपलब्ध किसी भी फंक्शन या मेथड का इस्तेमाल न करें। यदि आप ऐसा करते हैं, तो आपका एप्लिकेशन जैसे ही iOS 6 पर क्रैश होगा इस फ़ंक्शन का उपयोग किया जाता है।

अधिक जानकारी के लिए ऐप्पल प्रलेखन देखें: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.