如何在Android Studio中忽略库的minSdkVersion?

18
在我的项目中minSdkVersion = 10,在库中是11。
我得到:
BUILD_FAILED - Manifest merger failed : uses-sdk:minSdkVersion 10 cannot be smaller than version 11 declared in library.

如何忽略库的minSdkVersion?


更改库源并将其导入为模块(顺便说一下,这是有原因的11),因此如果您可以“覆盖”它以进行编译-那么您的应用程序将在v10上崩溃,使覆盖变得无意义。 - Blundell
可能是一个重复的问题:Manifest合并失败:uses-sdk:minSdkVersion 14 - tachyonflux
这不是重复内容。 我无法将库添加为模块,我通过gradle添加库。 - user1528799
2个回答

35
你需要将项目更改为库的值11,因为该属性意味着该库的设计是用于至少具有API 11的设备。它根本不支持API 10,因此您无法按照项目的要求和最小SDK使用它。有关< uses-sdk >的更多详细信息,请参见。
或者,找到另一个支持API 10的库。
更新:
或者,利用ManifestMerger的威力。从官方网站中查看。
段落标记
tools:overrideLibrary标记
这是一种特殊的标记,只能与uses-sdk声明一起使用,用于覆盖导入库的最低SDK版本比应用程序的最低SDK版本更近的情况。如果没有这样的标记,清单合并器将失败。该标记将允许用户选择可以导入哪些库,忽略最小SDK版本。
例如,在主android清单中:
<uses-sdk android:targetSdkVersion="14" android:minSdkVersion="2"
      tools:overrideLibrary="com.example.lib1, com.example.lib2"/>

将允许以下清单的库被导入而不出错:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.lib1">
    <uses-sdk android:minSdkVersion="4" />
</manifest>

5
请看我的更新。您需要将tools:overrideLibrary="your.library"添加到项目的清单文件中的uses-sdk中。 - gio
如果库使用了在我所用的minSdkVersion中过于新的函数,IDE会警告我吗? - android developer
@androiddeveloper 不确定,我猜最好的方法是尝试一些简单的项目,以确保它的工作原理。 - gio
有没有一种方法可以检测Gradle文件中包含的所有库所需的最小SDK要求? - Stack Diego
如果问题出在targetSdkVersion上,这并没有什么帮助。我的意思是,例如,如果库中的目标版本是32,而您的应用程序是30,则无济于事。 - Dr.jacky
显示剩余3条评论

6

你需要在你的清单文件中声明如下:

<uses-sdk tools:overrideLibrary="com.example.android" />

不要忘记安全地使用库,例如:

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {

//your code here
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接