我使用的是需要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而不是我的清单。
如果在build.gradle中而不是在AndroidManifest.xml中声明minSdk,我如何使用overrideLibrary
?
答案 0 :(得分:504)
打开Android Studio - >打开清单文件
添加
<uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>
不要忘记在xmlns:tools="http://schemas.android.com/tools"
代码
<application>
答案 1 :(得分:152)
在build.gradle中声明你的minSdk并不重要。您必须在overrideLibrary
中复制AndroidManifest.xml
,如文档here所示。
<manifest
... >
<uses-sdk tools:overrideLibrary="com.example.lib1, com.example.lib2"/>
...
</manifest>
系统会自动忽略AndroidManifest.xml中声明的sdkVersion。
我希望这可以解决你的问题。
答案 2 :(得分:4)
<manifest xmlns:tools="http://schemas.android.com/tools" ... >
<uses-sdk tools:overrideLibrary="nl.innovalor.ocr, nl.innovalor.corelib" />
我遇到了不同的min sdk版本之间的冲突问题。 所以这个解决方案对我有用。
答案 3 :(得分:1)
我刚刚更改了@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
中的minSdkVersion="7"
,但它确实有效。
步骤:
C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xml
C:\MyApp\platforms\android\CordovaLib\AndroidManifest.xml
在新的cmd提示符中执行Ran命令:
<uses-sdk android:minSdkVersion="7"/>
答案 4 :(得分:1)
由于库需要minSdkVersion 17
,您可以在build.gradle
(模块:应用程序)文件中更改相同内容:
defaultConfig {
minSdkVersion 17
targetSdkVersion 25
}
在该构建之后,项目不应抛出任何构建错误。
答案 5 :(得分:0)
在manifest.xml中使用此代码
<uses-sdk
android:minSdkVersion="16"
android:maxSdkVersion="17"
tools:overrideLibrary="x"/>
答案 6 :(得分:0)
仅更改了android:minSdkVersion =“ 16”,并且工作完美 C:\ MyApp \ platforms \ android \ CordovaLib \ AndroidManifest.xml
答案 7 :(得分: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数据匹配
答案 8 :(得分:0)
在overrideLibrary
中而不是build.gradle
中声明minSdk时,请使用AndroidManifest.xml
如果您使用的是Android Studio:
将<uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>
添加到清单中,不要忘记也包含xmlns:tools="http://schemas.android.com/tools"
。