我使用的是leanback库,它需要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。

当minSdk在构建中声明时,我如何使用overrideLibrary。gradle而不是AndroidManifest.xml?


当前回答

这对我很有用

<uses-sdk 
    android:minSdkVersion="16"
    android:maxSdkVersion="17"
    tools:overrideLibrary="pl.droidsonroids.gif" />
      


   

其他回答

打开Android Studio ->打开Manifest文件

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

在build.gradle中声明minSdk并不重要。你必须复制overrideLibrary到你的AndroidManifest.xml中,就像这里记录的那样。

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

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

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

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

我正面临着不同的min sdk版本之间冲突的问题。 所以这个方法对我很有效。

因为库需要minSdkVersion 17,那么你可以在build.gradle(模块:应用程序)文件中更改相同的内容:

defaultConfig {
        minSdkVersion 17 
        targetSdkVersion 25
}

在构建之后,项目不应该抛出任何构建错误。

这对我很有用

<uses-sdk 
    android:minSdkVersion="16"
    android:maxSdkVersion="17"
    tools:overrideLibrary="pl.droidsonroids.gif" />