2015-07-09 9 views
5

मैं एंड्रॉइड 1 9 को लक्षित कर रहा हूं (क्योंकि यही मेरा फोन चल रहा है)। मैं बटन के साथ एक अधिसूचना जोड़ना चाहता हूँ; ऐसा लगता है कि appcompat-v7.app.NotificationCompat का उपयोग करना सही तरीका है।मैं एंड्रॉइड समर्थन लाइब्रेरी का पुराना संस्करण कैसे डाउनलोड कर सकता हूं?

हालांकि, जब मैं एंड्रॉइड सपोर्ट रिपोजिटरी संशोधन 22.2 (build.gradle निर्भरता के माध्यम से) से एपकोम्पैट-वी 7 जोड़ता हूं, इसमें फ़ाइल ऐप/बिल्ड/इंटरमीडिएट/विस्फोट-एआर/com.android.support/appcompat- v7/22.2.0/res/values-v21/values-v21.xml जो संकलित नहीं करता है क्योंकि यह मानता है कि लक्ष्य 21+ है।

मैंने उस फ़ाइल को हटाने का प्रयास किया, लेकिन यह पुन: उत्पन्न हो गया।

बिल्ड से फ़ाइल को बाहर करने का कोई तरीका प्रतीत नहीं होता है।

तो, मुझे समर्थन पुस्तकालय या भंडार का पुराना संस्करण प्राप्त करने की आवश्यकता है, जिसमें 21 सामान शामिल नहीं हैं।

मुझे लगता है कि मैं निर्भरता के बजाय सीधे सभी स्रोतों को आयात कर सकता हूं (और v21 सामान छोड़ सकता हूं)? मैं स्पष्ट नहीं हूं कि इसके साथ कहां से शुरुआत करें। मैं एसडीके के पुराने संस्करण प्राप्त करने के लिए एसडीके प्रबंधक का उपयोग कर सकता हूं, लेकिन यह केवल समर्थन पुस्तकालय का नवीनतम संस्करण प्रदान करता है।

+1

हुह की परवाह किए बिना, हर बार जब आप अपने minimumApi से एक विशेषता यह है कि नहीं है इस्तेमाल करने की कोशिश की चेतावनी? हमेशा नए निर्माण उपकरण के साथ नवीनतम समर्थन लाइब्रेरी के साथ नवीनतम स्थिर एपीआई को लक्षित करें ... यदि आप एपीआई> मिनीएसडीके से सामान का उपयोग कर रहे हैं तो आपको लिंट की वेयरिंग मिलनी चाहिए ... यदि आपके पास कोई नहीं है, तो इसे एपीआई के साथ सभी डिवाइस पर चलाना चाहिए lvl> = minSdk समस्याओं के बिना – Selvin

+0

अपनी समस्या – petey

+1

अपनी समस्या –

उत्तर

1

अपने Gradle निर्माण फ़ाइल में निर्भरता को बदलने 19 संस्करण (पुस्तकालय के संस्करण एसडीके आप के साथ संकलन कर रहे हैं से मेल खाना चाहिए) होने के लिए:

dependencies { 
    compile 'com.android.support:appcompat-v7:19.1.+' 
... 
} 

संपादित करें: यदि समर्थन lib की v19 नहीं करता ' टी अधिसूचना कॉम्पेट है, तो आप तब तक इसका उपयोग नहीं कर सकते जब तक कि आप बाद में एसडीके के खिलाफ संकलित नहीं हो जाते। आप अपने संकलित एसडीके की तुलना में उच्च संस्करण वाले एक समर्थन लाइब्रेरी को शामिल नहीं कर सकते - यह वह समस्या है जिसमें आप चल रहे हैं।

इस मामले परिवर्तन में:

android { 
    compileSdkVersion 22 
    ... 
} 

और

+0

एक छोटी सी समस्या है ... v19.0। +/19.1। + में ऐप नहीं है। नोटिफिकेशन कॉम्पेट क्लास – Selvin

+0

@ सेल्विन अहह अगर ऐसा है, तो ओपी का उपयोग नहीं कर सकता अधिसूचना कॉम्पेट अगर एसडीके 1 9 को लक्षित करता है - उसे बाद में एसडीके को लक्षित करना होगा जहां संबंधित lib नोटिफिकेशन कॉम्पेट का समर्थन करता है। उत्तर अपडेट किया गया। –

+0

दाएं। कारण मैं समर्थन पुस्तकालय का उपयोग कर रहा हूं क्योंकि मैं एपीआई 21 में पेश की गई एक सुविधा तक पहुंच चाहता हूं, इसलिए निश्चित रूप से मुझे उस स्तर को लक्षित करने की आवश्यकता है। –

2

lib निर्भरता appcompat समर्थन के 22 संस्करण पर सेट रहने दें आपके सवाल का सीधे जवाब देने के लिए यह जरूरी है कि सभी एक Gradle पर लाइन है:

compile 'com.android.support:appcompat-v7:22.2.0' 

वह अंतिम भाग वह संस्करण है जिसे आप प्राप्त कर रहे हैं। उपरोक्त उदाहरण पर 22.2.0

और इस लिंक पर आप जाँच कर सकते हैं संशोधन संख्या: https://developer.android.com/tools/support-library/index.html#revisions

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

एक प्रकार का वृक्ष आप दे देंगे एक targetAPI

+4

गलत। यदि आप चाहते हैं कि आपका ऐप काम करने की स्थिति में बने रहें तो आपको कोरएक्ट एपीआई को लक्षित करना होगा। – f470071

+0

@ लेजर यदि आप अपनी सभी टिप्पणियां पढ़ते हैं, तो आप देखेंगे कि वह दृश्यों के पीछे क्या हो रहा है और वास्तव में एफयूडी फैलाने के बारे में समझने के बिना एक बुरा डेवलपर है। हां एपीआई पर मतभेद हैं लेकिन मेरा जवाब केवल नवीनतम एपीआई को संकलित करना है, न केवल इसके खिलाफ कोड। – Budius

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