2011-08-27 12 views
19

के बीच अंतर मैनिफ़ेस्ट फ़ाइल में targetSdkVersion सेट और बिल्डिंग वातावरण में प्रोजेक्ट बिल्ड लक्ष्य सेट (उदा। ग्रहण) के बीच क्या अंतर है?targetSdkVersion और Project Build target

मैंने इन दो विशेषताओं पर अधिक जानकारी प्राप्त करने का प्रयास किया है, लेकिन मुझे कोई स्पष्ट और विशिष्ट स्पष्टीकरण नहीं मिला।

ऐसा लगता है कि प्रोजेक्ट बिल्ड लक्ष्य संकलन के दौरान उपयोग किए जाने वाले एपीआई संगतता स्तर पर निर्णय लेता है। जब targetSdkVersion केवल दिए गए API स्तर के प्रकट तत्वों की दृश्यता को प्रभावित करता है।

क्या कोई इसे पुष्टि/विस्तारित कर सकता है?

संपादित करें: त्वरित प्रतिक्रियाओं के लिए धन्यवाद दोस्तों। मैं अपने प्रश्न में उल्लेख करना भूल गया कि मैंने इन सुविधाओं के बारे में एंड्रॉइड देव पर सभी विषयों को पढ़ा है और इसे भी गुमराह किया है और इसे स्टैक ओवरफ़्लो पर खोजा है। इसलिए मैं एंड्रॉइड मार्केट और एंड्रॉइड सिस्टम में इस्तेमाल होने वाले न्यूनतम/लक्ष्य/अधिकतम एसडीकेवीर्सन के मूल उद्देश्य को समझता हूं। हालांकि, इस मैनिफेस्ट विकल्प में समस्या रखने वाले लोगों की अन्य पोस्टों के मुताबिक, ऐसा लगता है कि एसडीके वास्तव में एपीआई स्तर की व्याख्या के तरीके पर असर डालता है। कम से कम यही मुझे संदेह है।

एक वास्तव में अच्छा विवरण यहां दिया गया है: http://developer.android.com/guide/appendix/api-levels.html

हालांकि, यह अभी मेरे लिए स्पष्ट नहीं है targetSdkVersion एंड्रॉयड सिस्टम पर APK के संकलन/क्रम को प्रभावित करता है या नहीं? या यह केवल सत्यापन के लिए है-एसडीके दस्तावेज सुझाव देता है?

+0

मैं उपयोग-एसडीके तत्व के मूल उद्देश्य को समझता हूं, लेकिन मेरा प्रश्न यह है कि यदि लक्ष्य एसडीकेवर्सन वास्तव में एंड्रॉइड सिस्टम पर एप्लिकेशन चलाने के तरीके पर असर डालता है। या हो सकता है कि यह केवल सत्यापन के लिए है क्योंकि दस्तावेज़ीकरण से पता चलता है। – hnviet

उत्तर

27

targetSdkVersion विशेषता वास्तव में किसी एप्लिकेशन के रनटाइम व्यवहार को प्रभावित करती है।

आपके द्वारा सेट किए गए सेट के आधार पर यह निर्धारित करेगा कि एंड्रॉइड फ्रेमवर्क में संगतता सुविधाएं सक्षम/अक्षम हैं या नहीं।

उदाहरण के लिए, एक बार जब आप targetSdkVersion = 11 सेट करते हैं, तो आपके एप्लिकेशन की डिफ़ॉल्ट थीम @android:style/Theme.Holo पर सेट की जाएगी - जिसका अर्थ है कि आपके एप्लिकेशन में हनीकॉम-शैली UI विजेट होंगे, एक एक्शन बार मिलेगा, और उसके पास विकल्प मेनू नहीं होगा स्क्रीन के नीचे बटन।

यदि आप लक्ष्य मूल्य को कम मूल्य पर सेट करते हैं, तो आपकी डिफ़ॉल्ट थीम @android:style/Theme जारी रहेगी - इस पर ध्यान दिए बिना कि आप वास्तव में किस एपीआई स्तर के विरुद्ध निर्माण कर रहे हैं।

लक्ष्य एसडीकेलेवल <supports-screens> तत्व के लिए डिफ़ॉल्ट मानों को भी प्रभावित करता है, जो बदले में यह निर्धारित करेगा कि आपका एप्लिकेशन घनत्व संगतता मोड में चलता है या नहीं।

दिलचस्प नोट: एंड्रॉइड मार्केट वास्तव में इस समय किसी भी चीज़ के लिए targetSdkLevel विशेषता का उपयोग नहीं करता है। यह पूरी तरह से रनटाइम पर संगतता उद्देश्यों के लिए उपयोग किया जाता है, और संभवतः संकलन समय पर - हालांकि मैंने वहां व्यवहार में नहीं देखा है। अगर लोग कंपाइलर के बारे में उत्सुक हैं, तो मैं अधिक जानकारी प्राप्त करने के लिए एसडीके टीम के साथ जांच कर सकता हूं।

बेशक, यह पूरी तरह से संभव है कि बाजार भविष्य में इसके साथ कुछ करने का फैसला कर सके।

+0

बहुत बढ़िया स्पष्टीकरण। SO पर इन विशेषताओं के बारे में बहुत गलत जानकारी है। मैं निश्चित रूप से संकलन समय पहलू में रुचि रखूंगा। धन्यवाद! होलो थीम के बारे में –

+0

- आपने कहा था कि "आपके एप्लिकेशन की डिफ़ॉल्ट थीम @android: शैली/थीम.होलो" पर सेट की जाएगी। क्या यह केवल एपीआई स्तर 11 और उच्चतर वाले उपकरणों पर लागू होता है? – MichalH

4

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

android:targetSdkVersion 

एपीआई स्तर को निर्दिष्ट करने वाला एक पूर्णांक जो एप्लिकेशन लक्षित कर रहा है।

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

आप इस URL का हवाला देते हुए अधिक जानकारी प्राप्त कर सकते हैं:

http://developer.android.com/guide/topics/manifest/uses-sdk-element.html

वहाँ भी एक अच्छा बनाने के लिए जाँच पर गूगल द्वारा लिखित लेख है सुनिश्चित करें कि आप मौजूदा उपयोगकर्ताओं Android OS संस्करण उचित वर्ग का उपयोग करेगा/तरीकों

http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html

+0

जैसे ही ट्रेवर अपने जवाब में कहता है, इस समय मार्केट द्वारा लक्ष्य एसडीकेवर्सन का उपयोग नहीं किया जाता है। मैं एक ऐप अपलोड कर सकता हूं, और एक लक्ष्य अपलोड कर सकता हूं जिसमें targetSdkVersion = 10 है और फिर भी मैं इसे अपने एचसी टैबलेट पर बाजार में देख सकता हूं। आप maxSdkVersion के बारे में सोच रहे होंगे, जिसे सेट/इस्तेमाल करने की अनुशंसा नहीं की जाती है। –

+0

मेरे जवाब में, मैंने कभी नहीं कहा था कि इसका इस्तेमाल बाजार के लिए किया गया था, लेकिन आपके ऐप के भीतर। – hooked82

+0

हाँ, यह आपके मैनिफेस्ट में सेट है। मैं उलझन में हो सकता हूं लेकिन आपकी पहली पंक्ति "एंड्रॉइड मार्केट के लिए आपका लक्ष्य एसडीकेवर्सन का उपयोग यह जानने के लिए किया जाता है कि कौन से डिवाइस आपके एप्लिकेशन को दिखाने/दिखाने के लिए नहीं दिखाते हैं" ऐसा लगता है कि मार्केट इसका उपयोग यह निर्धारित करने के लिए करता है कि एपीआई स्तरों को चलाने वाले उपयोगकर्ताओं को ऐप दिखाना है या नहीं आपने लक्ष्य एसडीकेवर्सन को सेट करने के बजाय। जब वास्तव में बाजार मूल रूप से इसे अनदेखा करता है। आपके उत्तर में बाकी सब कुछ सुनहरा है। –

1

Eclipse में अपना "परियोजना बनाएँ" -dialog में, आप minSdkVersion निर्दिष्ट करें।यह एपीआई-स्तर है जो आपके आवेदन को चलाने के लिए आवश्यक है।

targetSdkVersion-सामग्री केवल एंड्रॉइड मार्केट को बताती है कि निर्दिष्ट ऐप-स्तर के तहत चलाने के लिए आपकी ऐप विकसित की गई थी (और शायद अनुकूलित)।

1

बिल्ड लक्ष्य वह है जिस पर आप ऐप का परीक्षण करेंगे। targetSdkVersion वह है जिसे आपका ऐप विशेष रूप से विकसित किया गया था। दोनों ही समय के समान हैं।

आपको एक विस्तृत स्पष्टीकरण here मिलेगा।

0

targetSdkVersion विशेषता सिस्टम को सूचित करती है कि आपने दिए गए संस्करण (एपीआई स्तर) के खिलाफ अपने ऐप का परीक्षण किया है और सिस्टम को लक्ष्य संस्करण के साथ आपके ऐप की अग्रेषित संगतता को बनाए रखने के लिए किसी भी संगतता व्यवहार को सक्षम नहीं करना चाहिए। एप्लिकेशन अभी भी पुराने संस्करणों (नीचे minSdkVersion) पर चलाने में सक्षम है।

अधिक विस्तार के लिए - http://developer.android.com/guide/topics/manifest/uses-sdk-element.html

0

यह सवाल पहले से ही पर्याप्त रूप से उत्तर दिया गया है, लेकिन मैं बाहर बात करने के लिए यह अब पूरी तरह से सही है कि Google Play की दुकान पर सभी targetSdkVersion का उपयोग नहीं करता है कि चाहते हैं।

विशिष्ट मामले में जहां आपने लक्ष्य एसडीकेवर्सन को 23 (मार्शमॉलो 6.0) पर सेट किया है और अपना एपीके अपलोड किया है, भले ही आप बीटा संस्करण अपलोड कर रहे हों, फिर भी आप उस एप के लिए एपीके सबमिट नहीं कर पाएंगे जो कम है 23 से

यह 22 और 23 के बीच अनुमतियों में परिवर्तनों के कारण है, जिन्हें किसी दिए गए ऐप के लिए उलटने की अनुमति नहीं है।

यदि आप बीटा में 23 की कोशिश कर रहे थे तो यह एक जाल का थोड़ा सा हो सकता है और यह सुनिश्चित नहीं है कि आप अभी तक इसका समर्थन करने के लिए तैयार हैं।

संबंधित मुद्दे