build.gradleファイルでtools:overrideLibraryを使用するにはどうすればよいですか?


295

Android 17以降を必要とする無駄のないライブラリを使用しています。ただし、私のアプリは16のminSDKをサポートしているため、gradleからビルドエラーが表示されます

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、私のマニフェストにマーカーを、しかし、問題は、私は私のGradleのファイルではなく、私のマニフェストで私minSdkを宣言していますということです。

overrideLibraryAndroidManifest.xmlではなくbuild.gradleでminSdkが宣言されている場合、どのように使用しますか?


これを行わないでください。代わりに、build.gradleのminsdkversionを更新します
Dr Deo

4
これを行う正当な理由があります。たとえば、使用する前にAPIレベルをテストしてライブラリを条件付きで使用するなどです。
ギヨームペロット

回答:


568

Android Studioを開く->マニフェストファイルを開く

追加 <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/…を
Theo

1
tools:overrideLibray = "ca.barrenechea.widget.recyclerview.decoration"を追加した後も、まだ問題が残っています。動作していましたが、新しいアクティビティを作成したため、今日は突然動作を停止しました。
arjunkn 2017

あなたは私の日を保存しました(y)
KunalK 2017年

@arjunkn:<uses-sdk tools:overrideLibray = "ca.barrenechea.widget.recyclerview.decoration" />を追加します。機能しない場合は、ツールの名前空間が正しいかどうか、または正しい名前空間がxmlns:tools = " スキーマであるかどうかを確認してください。 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
uses-sdkでバージョンを指定する必要がありますか?無視されるAndroidManifestのバージョンを指定するのは紛らわしいようです
emmby

1
あなたが正しいです。AndroidManifest Gradleで設定しても、コンパイル時に無視されます。
icastell 14

13
例では2つのライブラリを表示する場合は+1。2つの別々のuse-sdkタグを使用することはできません。したがって、2つ以上オーバーライドする場合は、間にコンマを挿入できます。ありがとう!!
Hitesh Chavda

1
しかし、これは私がコンマで区切られた2つのライブラリを使用するのに機能しませんでした。
Zia Ur Rahman

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(Module:Application)ファイルで同じように変更できます:

defaultConfig {
        minSdkVersion 17 
        targetSdkVersion 25
}

その後、プロジェクトをビルドしても、ビルドエラーはスローされません。


4
これは機能しますが、実際には質問の答えにはなりません。OPは、overrideLibraryの使用方法を尋ねます。また、準拠するのではなく上書きしたい特定のケースがあります(上書きしても問題ありません)
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. 新しいコマンドプロンプトでコマンドを実行:

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


1
これは質問に答えません。これはoverrideLibrary、build.gradleでminSdkが宣言されている場合の使用方法です。
LarsH

1

android:minSdkVersion = "16"のみを変更しただけで、完全に機能しますC:\ MyApp \ platforms \ android \ CordovaLib \ AndroidManifest.xml


0

manifest.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)で使用していないライブラリを削除し、SDKのバージョンがアプリレベルのGradleデータと一致することを確認します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.