2012-03-27 13 views
6

मेरा प्रश्न एक बहुत ही समान सवाल उठाया, this one। लेकिन स्वीकृत उत्तर (एकल) दूसरे प्रश्न पर इंगित करता है, this one, जो वास्तव में मूल प्रश्न का उत्तर नहीं देता है।अंतिम एपीके पर एंड्रॉइड बिल्ड लक्ष्य का क्या असर पड़ता है?

Android दस्तावेज़ कहता है:

बिल्ड लक्ष्य निर्दिष्ट करता है जो एंड्रॉयड प्लेटफॉर्म आप चाहें के खिलाफ बनाया अपने आवेदन।

लेकिन वास्तव में इसका क्या अर्थ है?

जिस तरह से मैं इसे देखता हूं, मेरे पास minSdkVersion=4 और targetSdkVersion=10 हो सकता है लेकिन एपीआई स्तर 4 पर बिल्ड लक्ष्य निर्धारित करें। क्या होगा? ग्रहण मानता है कि मैं एपीआई स्तर 4 के लिए विकास कर रहा हूं और 4 से ऊपर एपीआई स्तर पर परिभाषित किसी भी विधि, स्थिर या जो भी मेरे लिए उपलब्ध नहीं होगा। अगर मैं उनका उपयोग करने की कोशिश करता हूं, तो एप्लीकेशन संकलित नहीं होगा। मुझे इसके बारे में पता है।

लेकिन मुझे इसे दूसरे तरीके से डाल दिया ...

चलो कहते हैं कि मैं केवल minSdkVersion=4 निर्धारित किया है दो, targetSdkVersion परिभाषित नहीं है। मैं भी का उपयोग नहीं कर रहा हूं, जो कि उपर्युक्त एपीआई स्तर पर उपलब्ध किसी भी विधि या स्थिर है। इस स्थिति में, क्या यह वास्तव में निर्माण लक्ष्य को चुनता है? क्या अंतिम एपीके में इसका कोई असर होगा?

उत्तर

6

बिल्ड लक्ष्य

बिल्ड लक्ष्य है एपीआई स्तर ग्रहण/IntelliJ/जो भी आईडीई आप उपयोग कर रहे हैं उसके खिलाफ निर्माण कर रहा है। यह बस आईडीई/बिल्ड सिस्टम द्वारा उपयोग किया जाता है यह जानने के लिए कि कौन से एपीआई प्रदान करते हैं। आप एपीआई स्तर 14 के खिलाफ निर्माण करते हैं, तो आवेदन अभी भी API स्तर 7 पर चलाने के लिए सक्षम, 7.

मैं ज्यादातर निर्माण का लक्ष्य रखा हो जाएगा उपलब्ध कराने आप किसी भी ऐसे API एपीआई स्तर पर उपलब्ध नहीं हैं कॉल नहीं करते एंड्रॉइड के समान: targetSdkVersion, हालांकि इसकी आवश्यकता नहीं है।

स्रोत: http://simonvt.net/2012/02/07/what-api-level-should-i-target/

2

यदि आप उच्च निर्माण लक्ष्य का उपयोग करते हैं तो आप कोड लिख सकते हैं जो प्रतिबिंब का उपयोग करके पिछले संस्करणों पर काम करेगा। यदि आप केवल एपीआई 4 तक ही सीमित होना चाहते हैं तो बिल्ड लक्ष्य के बारे में चिंता न करें।

पहले API स्तरों को लक्षित जब किसी उच्च आप इस प्रश्न पर देख सकते हैं के लिए संकलन का एक उदाहरण के लिए:

Android: how to code depending on the version of the API?

+0

कि अभी भी वास्तव में मेरे सवाल का जवाब नहीं है। –

+0

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

2

The way I see it, I can have the minSdkVersion=4 and targetSdkVersion=10 but set the build target to API Level 4. What will happen? Eclipse assumes I'm developing for API Level 4 and any method, constant or whatever defined on API Levels above 4 will not be available to me. If I try to use them, the application will not compile.

आप एपीआई स्तर से 4 निर्माण का लक्ष्य रखा है, ग्रहण आपको उस से अधिक तरीकों का संकलन करने की अनुमति नहीं देगा, क्योंकि यह कड़ाई से एपीआई स्तर 4 का उपयोग करता है। हालांकि, जब आप एक उच्च एपीआई स्तर पर बिल्ड लक्ष्य डालते हैं, तो आपके मामले एपीआई स्तर 10 में, आपका एपीके उपयोग के लिए उपलब्ध है एपीआई स्तर 4 से 10 के फोन।

दूसरे प्रश्न का उत्तर आपके प्रश्न का उत्तर देता है, यह एंड्रॉइड बिल्ड लक्ष्य है, minSdkVersion और targetSdkVersion आपके आवेदन का उपयोग करने में सक्षम उपयोगकर्ताओं की सीमा को प्रभावित करता है।

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

जब से तुम targetSdkVersion परिभाषित करने के लिए नहीं जा रहे हैं और आप जो एपीआई स्तर 4 से ऊपर है किसी भी सुविधाओं का उपयोग नहीं कर रहे हैं, targetSdkVersionminSdkVersion के रूप में ही किया जाएगा। जो कुछ भी आपके लक्षित लक्ष्य को लक्षित करता है स्वचालित रूप से निर्दिष्ट किया जाएगा।यह वास्तव में बात नहीं करता है का निर्माण जो लक्षित कर आप लेने जब तक यह एपीआई स्तर 4

नीचे है targetSdkVersion की Android दस्तावेज़ से:

An integer designating the API Level that the application targets. If not set, the default value equals that given to minSdkVersion. This attribute informs the system that you have tested against the target version and the system should not enable any compatibility behaviors to maintain your app's forward-compatibility with the target version. The application is still able to run on older versions (down to minSdkVersion).

+1

इनमें से कोई भी मेरे प्रश्न का उत्तर नहीं देता क्योंकि मेरा प्रश्न मैनिफेस्ट पैरामीटर के बारे में नहीं है, कुछ ऐसा लगता है कि हर कोई ध्यान केंद्रित करता है। मुझे पता है कि वे क्या करते हैं और वे कैसे काम करते हैं। यही वह नहीं है जिसे मैं जानना चाहता हूं। –

+0

स्टीव हैली का जवाब पूरी तरह से बताता है कि यह कैसे काम करता है और एक उदाहरण दिया। समुदाय सोचता है कि यह दूसरे प्रश्न का सही उत्तर है, जो मैं प्रतिबिंबित कर रहा हूं। क्षमा करें अगर मैं आपको गुमराह करता हूं। – androidnoob

+1

स्टीव हैली का सवाल पूरी तरह से बताता है कि minSdk/targetSdk कैसे काम करता है। लेकिन मेरा प्रश्न ** उन लोगों के बारे में ** नहीं है। –

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