2012-07-30 13 views
7

का समर्थन कर रहा हूं मैं एक्शनबैरशॉक का उपयोग करने वाले एप्लिकेशन पर काम कर रहा हूं। यह है के रूप में documentation बताते हैं:एंड्रॉइड 4.X के साथ संकलन लेकिन एपीआई लेवल 9

[...] पुस्तकालय की आवश्यकता है कि दोनों इसे और अपनी परियोजना Android 4.0 या नए के साथ संकलित कर रहे हैं। परियोजना के लिए भी आवश्यक है कि आप अपने संपादक दोनों में जेडीके 1.6 के साथ संकलित कर रहे हैं और कोई भी सिस्टम जो आप उपयोग कर रहे हैं।

तो, इसका मतलब है कि मैं Android 4.x के खिलाफ लेकिन मेरे प्रकट में अपने आवेदन (और पुस्तकालय) संकलन होगा, मुझे लगता है कि मैं लक्षित कर रहा घोषित (जैसे) एपीआई स्तर 9.

यह सभी ठीक काम करते हैं और अच्छी तरह से काम करते हैं लेकिन कुछ ऐसा है जो मुझे परेशान करता है। FAQ से:

क्या एपीआई स्तर मैं जब लाइब्रेरी का उपयोग कर मेरी प्रकट में लक्षित करना चाहिए?

लक्ष्यीकरण एपीआई स्तर 11 या नए की आवश्यकता है क्योंकि यह एंड्रॉइड का कारण बनता है ताकि नए डिवाइस पर चलने पर मूल क्रिया बार स्वचालित रूप से जोड़ा जा सके। जब से तुम नए एपीआई के खिलाफ संकलन किया जाएगा, लेकिन अपने अनुप्रयोग की संभावना Android के पुराने संस्करणों अतिरिक्त देखभाल की जा करने के लिए लिया जाना चाहिए के साथ उपकरणों पर चलाया जा या तो का उपयोग कर या ठीक से जाँच करें और किसी भी तरीकों है कि आपकी न्यूनतम एसडीके के बाद शुरू किए गए थे कॉल से बचने संस्करण।

इसका मतलब है, कि मैं करने के लिए मैन्युअल जांच हर विधि कॉल करना होगा, तो मैं किसी भी है कि अपने लक्षित एपीआई स्तर (मेरे मामले में 9) में उपलब्ध नहीं हैं का उपयोग नहीं करते? यह मेरे लिए गलत लगता है।

क्या मेरे आईडीई (इंटेलिजे) को बताने का कोई तरीका है, कि मैं केवल एपीआई लेवल 9 का उपयोग कर रहा हूं (इसलिए मुझे गैर-मौजूदा तरीकों/कक्षाओं के लिए कोई ऑटो-पूर्णता नहीं मिलती है और उनका उपयोग नहीं करते हैं दुर्घटना से) और फिर इसे किसी अन्य एंड्रॉइड संस्करण के खिलाफ संकलित करना चुनते हैं?

या क्या मैं कुछ स्वचालित चेक (जो संकलन समय पर चलता है) का उपयोग करने के लिए जांच कर सकता हूं?

उत्तर

8

एडीटी की लिंट सुविधा को चेतावनी देकर इसका ध्यान रखना चाहिए जब गलत API संस्करण के लिए API कॉल किए जा रहे हैं।

आपको नवीनतम एसडीके उपलब्ध (वर्तमान में, 4.1) के साथ एबीएस और आपकी परियोजना दोनों को संकलित करना चाहिए। आपके मेनिफेस्ट में targetSdkVersion जितना संभव हो उतना उच्च होना चाहिए (आदर्श रूप से आपके संकलन एसडीके से मेल खाता है) और आपके minSdkVersion को आपके द्वारा समर्थित निम्नतम संस्करण पर सेट किया जाना चाहिए।

लिंट आंशिक रूप से इंटेलिजे आईडीईए के साथ एकीकृत है और कमांड लाइन उपकरण के रूप में भी उपलब्ध है।

1

आप अस्थायी रूप से अपने लक्षित एसडीके को विभिन्न निचले हिस्से में सेट करते हैं और इसके साथ डीबग करते हैं। आपका अंतिम निर्माण तब नवीनतम एसडीके के साथ है।

+0

यह * मैनुअल * दृष्टिकोण होगा। –

+0

ओह मैंने सोचा कि आप प्रत्येक कॉल और जांच करके मैनुअल का मतलब है। मुझे नहीं लगता कि यह वही करता है जो आप स्वचालित रूप से चाहते हैं। भविष्य में एडीटी अपडेट के लिए यह एक अच्छा विचार है, लेकिन मुझे नहीं लगता कि यह वर्तमान में उपलब्ध है। लेकिन मुझे यकीन नहीं! –

0

एक बिल्ड लक्ष्य सेट करें जैसा आपने अपने मैनिफेस्ट में उल्लेख किया है।

+0

जैसा कि पहले से ही @GeeksOnHugs द्वारा उल्लेख किया गया है ... –

+0

बिल्ड लक्ष्य को सेट करना एक अलग एसडीके संस्करण सेट करना अलग है। इसे मैनिफेस्ट में किसी भी बदलाव की आवश्यकता नहीं है। मुझे पता है कि निर्माण लक्ष्य को बदलने में ग्रहण में कम से कम सभी त्रुटि संदेशों को ठीक कर देगा। आप संभवतः एक निम्न minSdkVersion भी शामिल करना चाहते हैं, साथ ही आपका targetSdkVersion भी शामिल है, ताकि यह Play Store पर minSdkVersion के रूप में उपलब्ध हो सके। – Stevy888

0

हमेशा के रूप में, आपको लक्ष्य एसडीके को अधिकतम और प्रोजेक्ट दोनों पर उपलब्ध अधिकतम सेट पर सेट करना चाहिए।गुण फ़ाइल (जैसा कि उनके वीडियो में से किसी एक पर Google द्वारा अनुशंसित), ताकि ADT & एसडीके तदनुसार एडीके को अनुकूलित करने में सक्षम हो।

minSdk को उस व्यक्ति को सेट करें जिसे आप अपने ऐप का समर्थन करना चाहते हैं, और यदि आपको बहुत-नई सुविधाओं का उपयोग करने में कोई समस्या हो तो लिंट आपको बताए।

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