2015-01-17 10 views
8

मैं पल में निम्नलिखित समस्या का सामना कर रहा हूँ:अक्षम निर्भरता अनुमतियाँ

मैं एप्लिकेशन 'ए' कौन सी अनुमतियां 1, 2, 3 का उपयोग करता है और एक निर्भरता के रूप में एक 3 पार्टी पुस्तकालय 'बी' का उपयोग करता है विकसित किया है (जोड़ा मेवेन & ग्रेडल का उपयोग कर)।

लाइब्रेरी 'बी' अनुमति 4 और 5 का उपयोग करता है। अब ऐप बनाने के दौरान, मैनिफेस्ट विलय ऐप 'ए' के ​​लिए अनुमति 4 और 5 जोड़ता है।

मैं इसे कैसे रोक सकता हूं और केवल अंतिम मैनिफेस्ट में अनुमति 1, 2 और 3 है? नोड या उपकरण: attr घोषणा एक से संवर्धित किया जा सकता http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-Markers

उत्तर

13

आप Selector

प्रत्येक उपकरणों का उपयोग करने की जरूरत है:

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

<permission 
     android:name="permissionOne" 
     tools:node="remove" 
     tools:selector="com.example.lib1"> 

यह अगले होगा अनुसार अपने प्रारंभिक आवश्यकताओं

<!--suppress AndroidDomInspection --> 
<uses-permission 
    tools:node="removeAll"/> 

लेकिन ध्यान रखें कि अन्य सभी <uses-permissions/> हटा दिए जाएंगे।

+0

कैसे जब अपने 2 उदाहरण का उपयोग मैं जिसके परिणामस्वरूप चेतावनी को दबाने कर सकते हैं:

tools:node="remove" 

एक उदाहरण स्थान की अनुमति दूर करने के लिए? "नाम विशेषता परिभाषित की जानी चाहिए" – throwaway

+0

@ थ्रोवे एंड्रॉइड टूल्स नेमस्पेस 'xmlns: tools = "http://schemas.android.com/tools" का उपयोग करें, इसे' ' – gio

+0

में जोड़ें, मैं इसके बारे में बात कर रहा था, ' 'नोड को' एंडोरिड: नाम 'विशेषता (लिंट के अनुसार) की आवश्यकता होती है, यही मेरा मतलब है: https://i.imgur.com/V5YZp11.png प्रोजेक्ट अभी भी उस त्रुटि के साथ बनाता है लेकिन यह अत्यधिक भ्रमित है – throwaway

0

जैसा कि आप जानते हैं कि सभी पुस्तकालयों में एक मेनिफेस्ट फ़ाइल है और वे एक साथ मिल जाएंगे। आप एक अनुमति इस आधार पर आपके पुस्तकालयों में से एक में है कि निकाल सकते हैं:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove" /> 
संबंधित मुद्दे