346

我正在使用需要 Android 17 或更高版本的leanback 库。但是我的应用程序支持 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。

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

4

9 回答 9

657

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

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

在此处输入图像描述

于 2014-12-05T06:52:21.587 回答
211

你在 build.gradle 中声明你的 minSdk 并不重要。您必须复制overrideLibrary您的AndroidManifest.xml,如此处所述

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

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

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

于 2014-11-27T17:13:21.543 回答
15
<manifest xmlns:tools="http://schemas.android.com/tools" ... >
  <uses-sdk tools:overrideLibrary="nl.innovalor.ocr, nl.innovalor.corelib" />

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

于 2017-09-29T11:44:41.913 回答
3

只更改了 android:minSdkVersion="16" 并且它工作完美 C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xml

于 2019-04-15T14:12:50.143 回答
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 提示符下运行命令:

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

于 2015-05-29T21:21:51.470 回答
0

在 manifest.xml 中使用此代码

<uses-sdk
android:minSdkVersion="16"
android:maxSdkVersion="17"
tools:overrideLibrary="x"/>
于 2018-06-30T07:57:00.130 回答
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 数据匹配

于 2019-09-18T21:52:59.413 回答
0

overrideLibrary在声明 minSdkbuild.gradle而不是 in 时使用AndroidManifest.xml

如果您使用的是 Android Studio:

添加<uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>到您的清单中,不要忘记也包括在内xmlns:tools="http://schemas.android.com/tools"

于 2020-08-27T03:51:56.987 回答
-1

根据库的需要minSdkVersion 17,您可以在build.gradle(Module:Application) 文件中进行相同的更改:

defaultConfig {
        minSdkVersion 17 
        targetSdkVersion 25
}

之后构建项目不应引发任何构建错误。

于 2017-02-05T07:06:38.030 回答