वहाँ एक मॉड्यूल के build.gradle
फ़ाइल के लिए एक यथोचित आसान तरीका दर्शाता है कि एक निर्भरता से कुछ फ़ाइलों बाहर रखा जाना चाहिए है? मैं विशेष रूप से एएआर से कुछ संसाधनों को छोड़ने में रूचि रखता हूं।एएआर निर्भरता से विशिष्ट संसाधनों को कैसे बाहर निकालना है?
LeakCanary मेमोरी लीक नीचे ट्रैक करने के लिए मदद करने के लिए एक दिलचस्प पुस्तकालय है। हालांकि, इसमें 21 या उच्चतर के compileSdkVersion
की अनियंत्रित आवश्यकता है। हालांकि अधिकांश परियोजनाओं को इसमें कोई समस्या नहीं होनी चाहिए, लेकिन पुस्तकालय के लिए यह एक उचित कारण के बिना एक निश्चित compileSdkVersion
की आवश्यकता नहीं है। एक डेवलपमेंट टीम ने अपने एप या कुछ के बड़े संस्करण अपडेट के हिस्से के रूप में केवल उन सेटिंग्स को बदलने के लिए सामान्य नीति के हिस्से के रूप में अपने compileSdkVersion
को जमे हुए हो सकते हैं।
इस मामले में, कम से कम LeakCanary के v1.3.1 के लिए, एकमात्र कारण compileSdkVersion
की आवश्यकता है, AFAICT है, क्योंकि आर एक res/values-v21/
निर्देशिका है, एक विषय परिभाषा यह है कि Theme.Material
से विरासत हैं। इस विषय का प्रयोग नैदानिक गतिविधि द्वारा किया जाता है। यह गतिविधि अंतिम उपयोगकर्ताओं द्वारा कभी नहीं देखी जाती है, केवल डेवलपर्स द्वारा debug
बनाता है। स्पष्ट रूप से, वह गतिविधि क्या दिखती है, थीम-वार, वास्तव में कोई फर्क नहीं पड़ता। 21 के compileSdkVersion
को मजबूर करना सिर्फ उस नैदानिक गतिविधि के लिए एक निश्चित विषय है, आईएमएचओ, बेवकूफ।
यह अगर एक compile
निर्देश हम कह सकते हैं के हिस्से के रूप "अरे, res/values-v21/
इस आर से छोड़ कृपया, m'kay?" अच्छा होगा। -v21
विषय बस कहीं और परिभाषित, -v21
विषय छोड़ने निर्माण को तोड़ने नहीं होगा या रनटाइम पर चीजों को तोड़ने के एक विषय का एक वैकल्पिक परिभाषा प्रदान कर रहा है, लेकिन केवल हमें एक Holo
-themed नैदानिक गतिविधि दे देंगे के बाद से।
मैं निर्भरता के साथ कैसे काम करता है this answer देखने के लिए असफल। मैं भी अनिश्चित if it is complete, and it certainly does not appear to be supported हूं। यह वास्तव में "सरल" — के रूप में योग्य नहीं है, मैं उम्मीद करता हूं कि किसी को build.gradle
फ़ाइल में इसे छोड़ने की कोशिश न करें, केवल लीक कैनरी जैसे डायग्नोस्टिक लाइब्रेरी से एक फ़ाइल को ब्लॉक करने के लिए।
तो, वहाँ कुछ इस से अधिक आसान है कि Gradle के लिए Android प्लगइन का अब वर्तमान संस्करण के साथ काम करता है?
मुझे लगता है, LeakCanary के लिए वैकल्पिक हल (https://github.com/square/leakcanary) होगा इसे फोर्क करें और अपने स्वयं के संस्करण को उचित 'compileSdkVersion' के साथ संकलित करें। मुझे यकीन नहीं है कि क्या इसे प्रश्न के उत्तर के रूप में गिना जा सकता है। –
@KonstantinLoginov: LeakCanary परस्पर भागों चलती का एक उचित संख्या है, जिसके कारण मैं उलझन में है कि एक कांटा है कि सभी आसान हो जाएगा हूँ प्रतीत होता है। मैंने यह निर्धारित करने के लिए पर्याप्त पोकिंग किया कि केवल एंड्रॉइड 5.0+ फीचर 'थीम.मटेरियल' थी, जिसने मुझे इस सवाल से पूछा। जबकि मैं लीक कैनरी के संदर्भ में सवाल तैयार कर रहा हूं, यह मुद्दा उस पुस्तकालय से आगे निकलता है। – CommonsWare
Google के वर्तमान ग्रेडल प्लगइन स्रोत सार्वजनिक होने पर यह अच्छा होगा। डीएसएल के स्रोत [1] के लिए टैग रिलीज टैग [2] के पीछे हैं। [1] https://android.googlesource.com/platform/tools/gradle/+refs [2] https://jcenter.bintray.com/com/android/tools/build/gradle/ – JBirdVegas