【问题标题】:How do I ignore minSdkVersion of library in Android Studio?如何忽略 Android Studio 中库的 minSdkVersion?
【发布时间】:2014-12-06 20:03:07
【问题描述】:

在我的项目中 minSdkVersion = 10,在库中是 11。

我明白了:

BUILD_FAILED - Manifest merger failed : uses-sdk:minSdkVersion 10 cannot be smaller than version 11 declared in library.

如何忽略库的 minSdkVersion?

【问题讨论】:

  • 更改库源并将其作为模块导入(出于某种原因,它将为 11),因此如果您可以“覆盖”它进行编译 - 那么您的应用程序将在 v10 上崩溃,从而使覆盖毫无意义
  • 这不是重复的。我无法将库添加为模块,我通过 gradle 添加库

标签: android android-studio android-gradle-plugin android-min-sdk


【解决方案1】:

您需要将您的项目更改为库的值11,因为该属性意味着该库被设计用于至少具有 API 11 的设备。它根本不支持 API 10,因此您不能使用它根据您的项目的要求和最小的 SDK。查看更多关于< uses-sdk >的详细信息

寻找另一个支持 API 10 的库

更新:

使用 ManifestMerger 的力量。来自官方site

段落标记

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>

【讨论】:

  • 该库支持 API 10 及以下(书面文档),但 minSdkVersion 设置为 11。你知道,如果我能绕过这个限制?也许在 Gradle 中写一些东西。
  • 查看我的更新。您需要将 tools:overrideLibrary="your.library" 项目的清单文件添加到 uses-sdk
  • 谢谢!也是一个错误 - 无效指令 'overrideLibrary' 解决方案 - stackoverflow.com/questions/26844886/…
  • 如果库使用了对我使用过的 minSdkVersion 来说太新的函数,IDE 会警告我吗?
  • @androiddeveloper 不确定,我想最好是用一些简单的项目来尝试一下,以确定它是如何工作的
【解决方案2】:

你必须在你的清单文件中声明如下

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

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

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

//your code here
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 2014-06-25
    • 1970-01-01
    相关资源
    最近更新 更多