सूत्र है
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 पर माइग्रेशन के उदाहरण पर एक नज़र डालने की सलाह दूंगा।