我正在使用需要 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
当我查看 build tools documentation 时,我看到了如何将 overrideLibrary
标记添加到我的清单中,但问题是我在我的 gradle 文件而不是我的清单中声明了我的 minSdk。
当 minSdk 在 build.gradle 而不是 AndroidManifest.xml 中声明时,如何使用 overrideLibrary
?
overrideLibrary
做什么的人,“当较低优先级的清单具有更高的 minSdkVersion 值时,除非您应用 overrideLibrary 合并规则,否则会发生错误。” source。有效,此 overrideLibrary 只是删除了警告,它不会更改任何其他内容。
打开 Android Studio -> 打开清单文件
添加 <uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>
不要忘记在 <application>
标记之前也包含 xmlns:tools="http://schemas.android.com/tools"
https://i.stack.imgur.com/IiBwm.png
你在 build.gradle 中声明你的 minSdk 并不重要。您必须在您的 AndroidManifest.xml
中复制 overrideLibrary
,如记录的 here。
<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 版本之间的冲突问题。所以这个解决方案对我有用。
只更改了 android:minSdkVersion="16" 并且它工作完美 C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xml
我刚刚在 C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xml
中更改了 minSdkVersion="7"
,它起作用了。
脚步:
路径:C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xml 值:
overrideLibrary
。
在 manifest.xml 中使用此代码
<uses-sdk
android:minSdkVersion="16"
android:maxSdkVersion="17"
tools:overrideLibrary="x"/>
作为所有库的解决方案,我们可以匹配它们的 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 数据匹配
由于库需要 minSdkVersion 17
,因此您可以在 build.gradle
(Module:Application) 文件中进行更改:
defaultConfig {
minSdkVersion 17
targetSdkVersion 25
}
之后构建项目不应引发任何构建错误。
不定期副业成功案例分享
tools:overrideLibrary="info.hoang8f.fbutton"
<uses-sdk tools:ignore="GradleOverrides">
的包含库。这些将导致您的tools:overrideLibrary
属性被忽略。请参阅stackoverflow.com/questions/31062893/…