न्यूनतम एसडीके संस्करण / लक्ष्य एसडीके संस्करण बनाम एसडीके संस्करण संकलन के बीच क्या अंतर है?


214

"मिनट एसडीके संस्करण / लक्ष्य एसडीके संस्करण" और "संकलन एसडीके संस्करण" के बीच अंतर क्या हैं? मुझे पता है कि मिनट और लक्ष्य एसडीके का क्या मतलब है, लेकिन एसडीके संस्करण का क्या मतलब है?

ग्रहण में, मेरे पास न्यूनतम / अधिकतम और लक्ष्य एसडीके है, लेकिन एंड्रॉइड स्टूडियो में ये तीन सेटिंग्स हैं।


मैं वर्तमान में एक ऐसे ऐप पर काम कर रहा हूं, जहां मैंने 12 के रूप में targetdkversion का उपयोग किया है और मेरे सभी लेआउट बहुत असामान्य रूप से काम कर रहे हैं, फिर मैं इसे 23 में बदल देता हूं और यह एक आकर्षण की तरह काम करता है, इसलिए मुझे लगता है कि targetdk संस्करण हमेशा संकलित संस्करण के समान होना चाहिए
शाहिद सरवर

जवाबों:


232

मिनट SDK संस्करण एंड्रॉयड एसडीके के जल्द से जल्द रिहाई है कि आपके आवेदन पर चला सकते हैं है। आमतौर पर इसका कारण पहले के एपीआई के साथ समस्या, कार्यक्षमता में कमी या कुछ अन्य व्यवहार संबंधी समस्या है।

लक्ष्य SDK संस्करण संस्करण अपने आवेदन किया गया था लक्षित पर चलने के लिए। आदर्श रूप से, यह किसी प्रकार के इष्टतम रन स्थितियों के कारण है। यदि आप "संस्करण 19 के लिए अपना ऐप बनाते हैं", तो यह वह जगह है जहां यह निर्दिष्ट किया जाएगा। यह पहले या बाद के रिलीज पर चल सकता है, लेकिन यह वही है जो आप के लिए लक्ष्य कर रहे थे। यह ज्यादातर यह इंगित करने के लिए है कि बाज़ार में उपयोग के लिए आपका आवेदन कितना चालू है, आदि।

संकलन SDK संस्करण एंड्रॉयड अपने आईडीई (या मुझे लगता है संकलन के अन्य साधन) जब आप एक प्रकाशित अपने अनुप्रयोग बनाने के लिए उपयोग करता है के संस्करण है .apkफ़ाइल। आपके एप्लिकेशन के परीक्षण के लिए यह उपयोगी है क्योंकि आपके ऐप को विकसित करने के लिए इसे संकलित करना एक आम आवश्यकता है। जैसा कि एपीके को संकलित करने के लिए यह संस्करण होगा, यह स्वाभाविक रूप से आपकी रिहाई का संस्करण होगा। इसी तरह, यह आपके लक्षित एसडीके संस्करण से मेल खाने के लिए उचित है।


मेरा संकलित एसडीके संस्करण और लक्ष्य एसडीके संस्करण समान हैं। यह 21 है। मेरा ऐप क्रैश होने पर मैं इसे निचले एपीआई स्तर वाले उपकरणों पर चलाता हूं। मैं Android पर नया हूं, अब मुझे कैसे आगे बढ़ना चाहिए?
prgmrDev

2
@prgmrDev यदि आपका ऐप 21 से कम संस्करणों पर क्रैश होता है, तो आपको संभवतः अपना न्यूनतम एसडीके संस्करण 21 पर सेट करना चाहिए। यह वास्तव में 21 से कम के लक्ष्य पर आपके आवेदन को ठीक नहीं करेगा, यह सिर्फ नोट करेगा कि आपका ऐप निम्न संस्करणों पर असमर्थित है। आपके पास यह निर्धारित करने का विकल्प भी है कि वास्तव में आपके एप्लिकेशन को क्या तोड़ रहा है (संस्करण 21 में क्या बदला है), और उस निर्भरता का ख्याल रखने के लिए समर्थन जोड़ें, लेकिन मुझे संदेह है कि यह बहुत काम होगा और एंड्रॉइड शुरुआत के दायरे में नहीं। परियोजना।
मैट

1
यदि मैं अपना minSdkVersion = 14 सेट करता हूं तो क्या होगा; targetSdkVersion = 23; और 19 को SDK संकलित करें?
थैडसुजेल

5
@thadeuszlay आपका प्रश्न अप्रासंगिक है क्योंकि आपको थोड़ा सोचना चाहिए कि यदि आप संस्करण 23 पर चलने का लक्ष्य रखते हैं तो इसे 19 के साथ संकलित करना कैसे संभव है! कृपया सूत्र का पालन करें minSdkVersion <= targetSdkVersion <= compileSdkVersion
Asad

@Matt यह हो सकता है कि उदाहरण के लिए संकलन 26 का उपयोग करते समय, मैं गलती से एक सुविधा या जावा एपीआई का उपयोग करता हूं जो कि संस्करण 21 पर समर्थित नहीं है, जो कि न्यूनतम एसडीके है? माफ करना, वास्तव में कुछ मूलभूत अवधारणाओं यहाँ हो रही है नहीं
एचएएआरटी

83

सूत्र है

minSdkVersion <= targetSdkVersion <= compileSdkVersion

minSdkVersion - एक ऐसा मार्कर है जो एक न्यूनतम Android संस्करण को परिभाषित करता है, जिस पर एप्लिकेशन इंस्टॉल करने में सक्षम होगा। इसके अलावा इसका उपयोग Lint द्वारा मौजूद API को रोकने के लिए किया जाता है जो मौजूद नहीं है। साथ ही बिल्ड टाइम पर भी इसका असर पड़ता है। तो आप विकास के दौरान अधिकतम करने के लिए minSdkVersion को ओवरराइड करने के लिए बिल्ड फ्लेवर का उपयोग कर सकते हैं। यह उन सभी सुधारों का उपयोग करके तेजी से निर्माण करने में मदद करेगा जो एंड्रॉइड टीम हमारे लिए प्रदान करती है। उदाहरण के लिए कुछ सुविधाएँ Java 8 केवल minSdkVersion के विशिष्ट संस्करण से उपलब्ध हैं।

targetSdkVersion - एंड्रॉइड सिस्टम को विशिष्ट व्यवहार परिवर्तनों को चालू करने के लिए कहता है।

उदाहरण के लिए:

  • एंड्रॉइड 6.0 (एपीआई स्तर 23) Runtime Permissionsमें शुरू किया गया था। यदि आप targetSdkVersion22 पर सेट होते हैं या कम करते हैं, तो आपका उपयोगकर्ता किसी उपयोगकर्ता से कुछ समय के लिए अनुमति नहीं मांगता है।

  • एंड्रॉइड 8.0 (एपीआई स्तर 26) में शुरू notificationsकरना , सभी को एक चैनल को सौंपा जाना चाहिए या यह दिखाई नहीं देगा। एंड्रॉइड 7.1 (एपीआई स्तर 25) और उससे कम पर चलने वाले उपकरणों पर, उपयोगकर्ता केवल-ऐप के आधार पर सूचनाओं का प्रबंधन कर सकते हैं (प्रभावी रूप से प्रत्येक ऐप में केवल एंड्रॉइड 7.1 और निम्न पर एक चैनल है)।

  • एंड्रॉयड 9 (एपीआई स्तर 28) में शुरू Web-based data directories separated by process। यदि targetSdkVersion28+ है और आप WebViewअलग-अलग प्रक्रियाओं में कई बनाएंगे, तो आपको मिलेगाjava.lang.RuntimeException

compileSdkVersion - वास्तव में यह एसडीके प्लेटफॉर्म संस्करण है और ग्रैडल को बताता है जिसे संकलन करने के लिए एंड्रॉइड एसडीके उपयोग करता है। जब आप .javaAndroid एसडीके से नई सुविधाओं या डिबग फ़ाइलों का उपयोग करना चाहते हैं, तो आपको compileSdkVersion का ध्यान रखना चाहिए। एक और उदाहरण एंड्रॉइड का उपयोग कर रहा है जो उपयोग करने के लिए मजबूर करता है compileSdkVersion- स्तर 28. compileSdkVersion आपके एपीके में शामिल नहीं है : यह विशुद्ध रूप से उपयोग किया जाता है compile time। आपके compileSdkVersion को बदलने से रनटाइम व्यवहार नहीं बदलता है। यह उदाहरण के लिए नए संकलक चेतावनी / त्रुटियों को उत्पन्न कर सकता है। इसलिए यह दृढ़ता से अनुशंसा की जाती है कि आप हमेशा नवीनतम एसडीके के साथ संकलन करें। आपको मौजूदा कोड पर नए संकलन चेक के सभी लाभ प्राप्त होंगे, नए पदावनत एपीआई से बचें, और नए एपीआई का उपयोग करने के लिए तैयार रहें। एक और तथ्य हैcompileSdkVersion >= Support Library version

आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं । इसके अलावा, मैं आपको एंड्रॉइड 8.0 पर माइग्रेशन के उदाहरण पर एक नज़र डालने की सलाह दूंगा।


9
सबसे अच्छा जवाब यहाँ क्योंकि यह वास्तव में targetSdkVersion और compileSdkVersion के बीच व्यावहारिक अंतर बताता है
डीन वाइल्ड

@ yoAlex5 आपके उत्तर के लिए धन्यवाद। मैं देखता हूं कि कई मामले targetSdkVersion और compileSdkVersion समान हैं। एंड्रॉइड ने दो को अलग क्यों किया क्योंकि एक को संभालने के लिए पर्याप्त नहीं हो सकता है या दो अलग-अलग क्षेत्रों में बनाने के पीछे कोई विशेष कारण है?
मंजू

@Manju आप ऐसा धागा पर प्राप्त कर सकते stackoverflow.com/questions/26694108/...
yoAlex5

@ yoAlex5 'विशिष्ट व्यवहार परिवर्तनों को चालू करने के लिए एंड्रॉइड सिस्टम' का क्या मतलब है?
k_kumar

@ आतिश 'विशिष्ट व्यवहार परिवर्तन' 'उदाहरण के लिए' ब्लॉक में सूचीबद्ध हैं
yoAlex5

74

मिनट SDK संस्करण Android ऑपरेटिंग सिस्टम आपके आवेदन चलाने के लिए आवश्यक की न्यूनतम संस्करण है।

लक्ष्य SDK संस्करण एंड्रॉयड का संस्करण है, जो आपके ऐप्लिकेशन पर चलने के लिए बनाया गया था।

संकलन SDK संस्करण है कि एंड्रॉयड का संस्करण है निर्माण उपकरण का उपयोग करता है संकलन और रिहाई, रन या डिबग करने के लिए आवेदन का निर्माण।

आमतौर पर संकलन एसडीके संस्करण और लक्ष्य एसडीके संस्करण समान होते हैं।


23
और जब वे समान पेशेवरों / विपक्ष नहीं हैं?
पाउडर 366

4

compileSdkVersion : compileSdkVersion एपीआई का संस्करण है जिसके खिलाफ ऐप संकलित किया गया है। इसका मतलब है कि आप एपीआई के उस संस्करण में शामिल एंड्रॉइड एपीआई सुविधाओं का उपयोग कर सकते हैं (साथ ही सभी पिछले संस्करण, जाहिर है)। यदि आप API 16 सुविधाओं का उपयोग करते हैं और उपयोग करते हैं, लेकिन compileSdkVersion से 15 पर सेट करते हैं, तो आपको संकलन त्रुटि मिलेगी। यदि आप 16 पर compileSdkVersion सेट करते हैं, तब भी आप API 15 डिवाइस पर ऐप चला सकते हैं।

minSdkVersion : min sdk वर्जन आपके एप्लिकेशन को चलाने के लिए आवश्यक एंड्रॉइड ऑपरेटिंग सिस्टम का न्यूनतम संस्करण है।

targetSdkVersion : लक्ष्य sdk संस्करण वह संस्करण है जिस पर आपका ऐप चलाने के लिए लक्षित है।

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