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

rqdpfwrv  于 2022-11-14  发布在  其他
关注(0)|答案(9)|浏览(1074)

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

vjhs03f7

vjhs03f71#

打开Android Studio -〉打开清单文件
add <uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>不要忘记在<application>标签之前也包含xmlns:tools="http://schemas.android.com/tools"

xkftehaa

xkftehaa2#

您在build.gradle中声明minSdk并不重要,您必须将overrideLibrary复制到AndroidManifest.xml中,如本文所述。

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

系统会自动忽略AndroidManifest.xml中声明的sdkVersion。
我希望这能解决你问题

jtjikinw

jtjikinw3#

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

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

62o28rlo

62o28rlo4#

我只更改了android:minSdkVersion=“16”,它的工作非常完美C:\我的应用程序\平台\android\CordovaLib\AndroidManifest.xml

64jmpszr

64jmpszr5#

请在manifest.xml中使用以下代码

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

mkshixfv6#

我只是在C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xml中更改了minSdkVersion="7",它工作了。
操作步骤:
1.路径:C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xml
1.数值:<uses-sdk android:minSdkVersion="7"/>
1.在新的cmd提示符下运行命令:
C:\MyApp>phonegap build android --debug [phonegap] executing 'cordova build android --debug'... [phonegap] completed 'cordova build android --debug'

vm0i2vca

vm0i2vca7#

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

woobm2wo

woobm2wo8#

这对我有用

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

vybvopom9#

由于库需要minSdkVersion 17,因此您可以在build.gradle(模块:应用程序)文件中进行相同的更改:

defaultConfig {
        minSdkVersion 17 
        targetSdkVersion 25
}

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

相关问题