我如何使用工具:在构建中overrideLibrary。gradle文件?

我使用的是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在build中声明时,我如何使用overrideLibrary。gradle而不是AndroidManifest.xml?

165856 次浏览

在build.gradle中声明minSdk并不重要。你必须在你的AndroidManifest.xml中复制overrideLibrary,如文档中的在这里所示。

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

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

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

打开Android Studio ->打开Manifest文件

< p >添加 <uses-sdk tools:overrideLibrary="android.support.v17.leanback"/> 不要忘记在<application>标签

之前也包含xmlns:tools="http://schemas.android.com/tools"

enter image description here

我只是改变了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构建android——debug [phonegap]执行“cordova build android -debug”… [phonegap] completed 'cordova build android——debug'

  4. .

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

defaultConfig {
minSdkVersion 17
targetSdkVersion 25
}

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

<manifest xmlns:tools="http://schemas.android.com/tools" ... >
<uses-sdk tools:overrideLibrary="nl.innovalor.ocr, nl.innovalor.corelib" />
我正面临不同的min sdk版本之间冲突的问题。

在manifest.xml中使用此代码

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

只是改变了android:minSdkVersion="16",它的工作完美 C: \ MyApp \ android平台\ \ CordovaLib \ AndroidManifest.xml < / p >

作为所有库的解决方案,我们可以匹配他们的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数据匹配

这对我很有用

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