मैं उपकरण का उपयोग कैसे करूं: एक build.gradle फ़ाइल में ओवरराइड लॉर्ड्स?


295

मैं लीनबैक पुस्तकालयों का उपयोग कर रहा हूं, जिनके लिए एंड्रॉइड 17 या बाद के संस्करण की आवश्यकता होती है। हालाँकि मेरा ऐप 16 मिनट के एक मिनट का समर्थन करता है, इसलिए मुझे कहावत से एक बिल्ड त्रुटि मिलती है

Error:Execution failed for task ':Tasks:processPhoneDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 17 declared in library /Users/mike/Projects/android-for-dummies-v3/Tasks/build/intermediates/exploded-aar/com.android.support/leanback-v17/21.0.2/AndroidManifest.xml
    Suggestion: use tools:overrideLibrary="android.support.v17.leanback" to force usage

जब मैं बिल्ड टूल डॉक्यूमेंटेशन को देखता हूं, तो देखता हूं कि overrideLibraryमार्कर को मेरे मैनिफ़ेस्ट में कैसे जोड़ा जाए , लेकिन समस्या यह है कि मैं अपने मेनिफ़ेस्ट फ़ाइल में अपने मिन्सडेक को अपने मैनिफ़ेस्ट के बजाय घोषित कर रहा हूं।

overrideLibraryAndroidManifest.xml के बजाय build.gradle में minSdk घोषित होने पर मैं कैसे उपयोग करूं?


यह मत करो। इसके बजाय build.gradle
Dr Deo

4
ऐसा करने के लिए वैध कारण हैं, जैसे सशर्त रूप से उपयोग करने से पहले एपीआई स्तर का परीक्षण करके किसी पुस्तकालय का उपयोग करना।
गिलाउम पेरोट

जवाबों:


568

एंड्रॉइड स्टूडियो खोलें -> मैनिफेस्ट फ़ाइल खोलें

टैग के पहले, जोड़ना भी <uses-sdk tools:overrideLibrary="android.support.v17.leanback"/> शामिल करना न भूलेंxmlns:tools="http://schemas.android.com/tools"<application>

यहां छवि विवरण दर्ज करें


मेरे मामले मेंtools:overrideLibrary="info.hoang8f.fbutton"
शरीफ

13
शामिल पुस्तकालयों के लिए बाहर देखो <uses-sdk tools:ignore="GradleOverrides">। वे आपकी tools:overrideLibraryविशेषता को नजरअंदाज कर देंगे । देखें stackoverflow.com/questions/31062893/...
थियो

1
उपकरण जोड़ने के बाद भी मेरी समस्या मौजूद है: overrideLibray = "ca.barrenechea.widget.recyclerview.decoration"। यह काम कर रहा था लेकिन एक नई गतिविधि बनाने के बाद आज अचानक काम करना बंद कर दिया।
6

आपने मेरा दिन (y) बचा लिया
KunalK

@arjunkn: जोड़ें <उपयोग करता है- sdk उपकरण: overrideLibray = "ca.barrenechea.widget.recyclerview.decoration" />, यदि आपके टूल नेमस्पेस सही है या नहीं तो सही चेक नाम xmlns: tools = " schemas " नहीं है, तो यह काम नहीं कर रहा है । android.com/tools "
NIPHIN

170

इससे कोई फर्क नहीं पड़ता कि आप build.gradle में अपने minSdk की घोषणा करते हैं। आपको यहाँ पर दस्तावेज के रूप overrideLibraryमें कॉपी करना हैAndroidManifest.xml

<manifest 
    ... >
<uses-sdk tools:overrideLibrary="com.example.lib1, com.example.lib2"/>
    ...
</manifest>

सिस्टम स्वतः ही AndroidManifest.xml में घोषित sdkVersion को अनदेखा कर देता है।

मुझे उम्मीद है कि यह आपकी समस्या को हल करेगा।


1
क्या आपको उपयोग-एसडीके में कोई संस्करण निर्दिष्ट करना है? यह AndroidManifest में उन संस्करणों को निर्दिष्ट करने के लिए भ्रामक लगता है जिन्हें बस अनदेखा किया जा रहा है
Emmby

1
तुम सही हो। आवश्यक नहीं है, वैसे भी अगर आप इसे AndroidManifest gradle में सेट करते हैं तो संकलन के समय इसे अनदेखा कर देंगे।
इकास्टेल

13
उदाहरण में दो प्रदर्शनों के लिए +1। आप दो अलग-अलग उपयोग-एसडीके टैग का उपयोग नहीं कर सकते। इसलिए यदि आप दो या दो से अधिक ओवरराइड करना चाहते हैं तो आप कॉमा को बीच में रख सकते हैं। धन्यवाद!!
हितेश चावड़ा

1
लेकिन यह मेरे लिए अल्पविराम द्वारा अलग किए गए दो पुस्तकालयों का उपयोग करने के लिए मेरे पुस्तकालय के साथ कोई समस्या नहीं थी?
जिया उर रहमान

7
<manifest xmlns:tools="http://schemas.android.com/tools" ... >
  <uses-sdk tools:overrideLibrary="nl.innovalor.ocr, nl.innovalor.corelib" />

मैं अलग-अलग मिनटों के एसडीके संस्करणों के बीच संघर्ष के मुद्दे का सामना कर रहा था। इसलिए इस समाधान ने मेरे लिए काम किया।


1

जैसा कि लाइब्रेरी की आवश्यकता होती है, minSdkVersion 17तब आप उसी में बदल सकते हैं build.gradle(मॉड्यूल: एप्लिकेशन) फ़ाइल:

defaultConfig {
        minSdkVersion 17 
        targetSdkVersion 25
}

और उसके बाद परियोजना के निर्माण में कोई भी त्रुटि नहीं होनी चाहिए।


4
हालांकि यह काम करेगा, यह वास्तव में सवाल का जवाब नहीं देता है। ओपी पूछते हैं कि ओवरराइड लॉर्ड का उपयोग कैसे किया जाता है। और ऐसे विशिष्ट मामले हैं जहां आप अनुपालन के बजाय इसे ओवरराइड करना चाहते हैं (जैसा कि इसे ओवरराइड करने के लिए ठीक है)
Zoe

1

मैं बस में बदल minSdkVersion="7"गया C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xmlऔर यह काम किया।

कदम:

  1. पथ: C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xml
  2. मान: <uses-sdk android:minSdkVersion="7"/>
  3. नए cmd प्रॉम्प में Ran कमांड:

    C:\MyApp>phonegap build android --debug [phonegap] executing 'cordova build android --debug'... [phonegap] completed 'cordova build android --debug'


1
यह उस प्रश्न का उत्तर नहीं देता है, जो overrideLibraryकि बिल्ड.ग्रेड में minSdk घोषित होने पर कैसे उपयोग किया जाए।
लार्स

1

अभी-अभी केवल Android बदला: minSdkVersion = "16" और यह एकदम सही है C: \ MyApp \ प्लेटफार्मों \ android \ CordovaLib \ AndroidManifest.xml


0

इस कोड का उपयोग मैनिफ़ेस्ट। xml में करें

<uses-sdk
android:minSdkVersion="16"
android:maxSdkVersion="17"
tools:overrideLibrary="x"/>

0

सभी पुस्तकालयों के लिए आत्मा के रूप में हम उनमें से sdk संस्करण का मिलान कर सकते हैं ताकि कोई अप्रत्याशित घटना न हो

subprojects { 
afterEvaluate {project -> 
    if (project.hasProperty("android")) { 
        android { 
            compileSdkVersion 28 
            buildToolsVersion '28.0.3'
            defaultConfig {
                //It's kinda tricking android studio but anyway it works
                minSdkVersion 17
            }
        } 
    } 
    if (project.hasProperty("dependencies")) {
        dependencies {
            implementation 'com.android.support:support-core-utils:28.0.0'
            implementation 'com.android.support:appcompat-v7:28.0.0'
            implementation 'com.google.android.gms:play-services-base:16.1.0'
        }
    }
} 
}

उन पुस्तकालयों को निकालें जिन्हें आप अपनी परियोजना में उपयोग नहीं करते हैं (gms) और सुनिश्चित करें कि एसडीके संस्करण आपके ऐप स्तर के ग्रेड डेटा से मेल खाता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.