如何在build.gradle文件中使用工具:overrideLibrary?

emm*_*mby 276 android gradle android-tv

我正在使用leanback库,它需要Android 17或更高版本.但是我的应用支持minSDK为16,所以我从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
Run Code Online (Sandbox Code Playgroud)

当我查看构建工具文档时,我看到如何将overrideLibrary标记添加到我的清单中,但问题是我在gradle文件中而不是在清单中声明了我的minSdk.

overrideLibrary在build.gradle中而不是在AndroidManifest.xml中声明minSdk时如何使用?

xDr*_*onZ 532

打开Android Studio - >打开清单文件

添加 <uses-sdk tools:overrideLibrary="android.support.v17.leanback"/> 不要忘记xmlns:tools="http://schemas.android.com/tools"<application>标记之前包含

在此输入图像描述

  • 注意包含`<uses-sdk tools:ignore ="GradleOverrides">`的库.这些将导致您的`tools:overrideLibrary`属性被忽略.请参阅http://stackoverflow.com/questions/31062893/android-gradle-manifest-merger-failed (11认同)
  • 如果我想要的不仅仅是 overridelibrary 怎么办 (2认同)

ica*_*ell 158

你在build.gradle中声明你的minSdk并不重要.你要复制overrideLibrary你的AndroidManifest.xml,作为记录在这里.

<manifest 
    ... >
<uses-sdk tools:overrideLibrary="com.example.lib1, com.example.lib2"/>
    ...
</manifest>
Run Code Online (Sandbox Code Playgroud)

系统会自动忽略AndroidManifest.xml中声明的sdkVersion.

我希望这能解决你的问题.

  • +1用于显示示例中的两个库.您不能使用两个单独的uses-sdk标记.因此,如果要覆盖两个或更多,可以将逗号放在中间.谢谢!! (11认同)
  • 但这对我使用两个用逗号分隔的库不起作用,我的库有什么问题吗? (2认同)

Kul*_*ena 6

<manifest xmlns:tools="http://schemas.android.com/tools" ... >
  <uses-sdk tools:overrideLibrary="nl.innovalor.ocr, nl.innovalor.corelib" />
Run Code Online (Sandbox Code Playgroud)

我面临着不同的最小SDK版本之间的冲突问题。所以这个解决方案对我有用。