আমি কীভাবে সরঞ্জামগুলি ব্যবহার করব: একটি বিল্ডড্র্যাডল ফাইলটিতে ওভাররাইডলিবারি?


295

আমি লিনব্যাক লাইব্রেরিগুলি ব্যবহার করছি, যার জন্য অ্যান্ড্রয়েড 17 বা তার পরে প্রয়োজন। তবে আমার অ্যাপ্লিকেশনটি 16 এর একটি minSDK সমর্থন করে, তাই আমি গ্রেড বলার থেকে একটি বিল্ড ত্রুটি পাই

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আমার মেনিফেস্টে মার্কার যুক্ত করা যায় তবে সমস্যাটি হ'ল আমি আমার ম্যানিফেস্টের পরিবর্তে আমার গ্রেড ফাইলে আমার মিনিএসডিকে ঘোষণা করছি।

overrideLibraryমিনিসডিকে অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল এর পরিবর্তে বিল্ড.gradle এ ঘোষণা করা হলে আমি কীভাবে ব্যবহার করব ?


এটি করবেন না। পরিবর্তে বিল্ড.gradle এ minsdkversion আপডেট করুন
ড। দেও

4
এটি করার বৈধ কারণ রয়েছে যেমন শর্তাধীনভাবে কোনও লাইব্রেরি এপিআই স্তরের ব্যবহারের আগে এটি পরীক্ষা করে ব্যবহার করুন।
গিলিয়াম পেরেট

উত্তর:


568

Android স্টুডিও খুলুন -> ম্যানিফেস্ট ফাইল খুলুন

যোগ <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বৈশিষ্ট্যটিকে উপেক্ষা করার কারণ হবে । স্ট্যাকওভারফ্লো.com
থিও

1
আমার সমস্যাটি এখনও সরঞ্জামগুলি যুক্ত করার পরে রয়েছে: ওভাররাইডলিবারে = "ca.barrenechea.widget.recyclerview.decoration"। এটি কাজ করছে তবে একটি নতুন ক্রিয়াকলাপ তৈরি করার পরে হঠাৎ আজ কাজ করা বন্ধ করে দিয়েছে।
arjunkn

আপনি আমার দিনটি (y) বাঁচিয়েছেন
কুণালকে

@ আরজঙ্কন: যোগ <ব্যবহার-এসডিকি সরঞ্জামসমূহ: ওভাররাইডলিবারে = "সিএবারেনেনচিয়া.উইডজেট.রেসাইক্লারভিউ.ডেকোরেশন" />, যদি এটির কাজ না হয় তবে আপনার সরঞ্জামগুলির নামস্থান সঠিক কিনা তা সঠিক নামস্থানটি xMLns: সরঞ্জাম = "স্কিমাস" কিনা তা পরীক্ষা করে না । android.com/tools "
নিফিন

170

আপনি বিল্ড.gradle এ আপনার minSdk ঘোষণার কোনও বিষয় নয়। এখানে নথি হিসাবে overrideLibraryআপনার নিজের অনুলিপি করতে হবে ।AndroidManifest.xml

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

সিস্টেমটি অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে ঘোষিত এসডিকে ভার্সনটিকে স্বয়ংক্রিয়ভাবে উপেক্ষা করে।

আমি আশা করি এটি আপনার সমস্যার সমাধান করবে।


1
আপনি কি ব্যবহার-এসডিকে কোনও সংস্করণ নির্দিষ্ট করতে হবে?
এন্ড্রয়েড ম্যানিফেস্টে

1
তুমি ঠিক. প্রয়োজনীয় নয়, যাইহোক আপনি যদি এটিকে অ্যান্ড্রয়েডমেনিফিট গ্রেডে সেট করেন তবে এটি সংকলনের সময় এড়িয়ে যাবে।
আইসাস্টেল

13
উদাহরণস্বরূপ দুটি libs প্রদর্শনের জন্য +1। আপনি দুটি পৃথক ব্যবহার-এসডিকে ট্যাগ ব্যবহার করতে পারবেন না। সুতরাং আপনি যদি দুটি বা ততোধিক কাজকে ওভাররাইড করতে চান তবে আপনি কমাটি এর মাঝে রাখতে পারেন। ধন্যবাদ !!
হিতেশ চাভদা

1
তবে এটি আমার পক্ষে কমা দ্বারা আলাদা দুটি লাইব্রেরি ব্যবহার করার কাজ করে না, আমার লাইব্রেরিতে কোনও সমস্যা?
জিয়া উর রহমান

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

আমি বিভিন্ন মিনি sdk সংস্করণগুলির মধ্যে দ্বন্দ্বের সমস্যার মুখোমুখি হয়েছি। সুতরাং এই সমাধানটি আমার পক্ষে কাজ করেছিল।


1

লাইব্রেরির প্রয়োজন অনুসারে minSdkVersion 17আপনি একই build.gradle(মডিউল: অ্যাপ্লিকেশন) ফাইলটিতে পরিবর্তন করতে পারেন :

defaultConfig {
        minSdkVersion 17 
        targetSdkVersion 25
}

এবং প্রকল্পটি নির্মাণের পরে কোনও বিল্ড ত্রুটি নিক্ষেপ করা উচিত নয়।


4
যদিও এটি কাজ করবে, এটি আসলে প্রশ্নের উত্তর দেয় না। ওভার প্রশ্নে ওভাররাইডলিবারি কীভাবে ব্যবহৃত হয়। এবং সুনির্দিষ্ট কেস রয়েছে যেখানে আপনি এটির পরিবর্তনের পরিবর্তে এটি ওভাররাইড করতে চান (কারণ এটির
জো

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. নতুন সেন্টিমিডি প্রম্পটে রান কমান্ড:

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


1
এটি প্রশ্নের উত্তর দেয় না, overrideLibraryযখন buildSradle এ minSdk ঘোষণার সময় কীভাবে ব্যবহার করতে হয়।
লার্শ

1

কেবলমাত্র অ্যান্ড্রয়েড পরিবর্তিত হয়েছে: minSdkVersion = "16" এবং এটি নিখুঁত সি: \ মাই অ্যাপ্লিকেশন \ প্ল্যাটফর্মগুলি roid অ্যান্ড্রয়েড ord কর্ডোভালিব \ অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল


0

ম্যানিফেস্ট.এক্সএমএলে এই কোডটি ব্যবহার করুন

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

0

সমস্ত লাইব্রেরির আত্মাহুতি হিসাবে আমরা সেগুলির এসডিকে সংস্করণটি মেলতে পারি যাতে কোনও অনাকাঙ্ক্ষিত ঘটনা না ঘটে

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'
        }
    }
} 
}

আপনি আপনার প্রকল্পে (জিএমএস) ব্যবহার করেন না এমন গ্রন্থাগারগুলি সরিয়ে ফেলুন এবং নিশ্চিত করুন যে এসডিকে সংস্করণটি আপনার অ্যাপ্লিকেশন স্তরের গ্রেডের ডেটার সাথে মেলে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.