uses-sdk:minSdkVersion 15 不能小于库中声明的版本 16

Posted

技术标签:

【中文标题】uses-sdk:minSdkVersion 15 不能小于库中声明的版本 16【英文标题】:uses-sdk:minSdkVersion 15 cannot be smaller than version 16 declared in library 【发布时间】:2016-09-14 13:18:46 【问题描述】:

我不明白这个错误信息

  C:\Program Files (x86)\Jenkins\workspace\__temp-mobile-prev\platforms\android\AndroidManifest.xml:67:5 Error:
        uses-sdk:minSdkVersion 15 cannot be smaller than version 16 declared in library C:\Program Files (x86)\Jenkins\workspace\__temp-mobile-prev\platforms\android\build\intermediates\exploded-aar\com.paypal.sdk\paypal-android-sdk\2.14.2\AndroidManifest.xml
        Suggestion: use tools:overrideLibrary="com.paypal.android.sdk.payments" to force usage

因为 AndroidManifest.xml 的第 67 行看起来像:

<uses-sdk android:minSdkVersion="18" android:targetSdkVersion="22" />

15 来自哪里?

我使用 ionic 来构建我的应用程序。但我不认为这是问题所在。

【问题讨论】:

minSdkVersion __ targetSdkVersion __ and compileSdkVersion __ in Build.gradle(Module: app) 你使用外部库吗? @YoannHercouet 我只使用离子框架。我不知道他们是否使用外部库。也许离子插件是外部库。发生错误是因为 paypal 插件需要 16 的最低 sdk 版本 【参考方案1】:

我的问题出在cordova-plugin-browsertab。

您需要将my_project/plugins/cordova-plugin-browsertab/src/android/BrowserTab.gradle的第1行更改为

def minSdkVersion = 19

确保您已将最低 SDK 添加到您的 config.xml

<preference name="android-minSdkVersion" value="19" />

然后通过以下方式删除并添加cordova-android:

cordova platform remove android
cordova platform add android

【讨论】:

这是在我的项目中导致错误的同一个地方。但是在 config.xml 中定义 并没有帮助。我已将 my_project/plugins/cordova-plugin-browsertab/src/android/BrowserTab.gradle 的第 1 行修改为:def minSdkVersion = 19,然后重新安装 android 平台。【参考方案2】:

也许我发现了问题。

我不想覆盖 build.gradle,因为 cordova 会动态创建这个文件。但我搜索了为什么 cdvMinSdkVersion 返回错误值。原因是这个barcodescanner-plugin。插件gradle文件有这一行

ext.cdvMinSdkVersion = 15

AndroidManifest.xml 覆盖我的值。在我删除并再次添加插件后,它就可以工作了。 但我不知道为什么?也许有人可以解释不同 gradle 脚本的顺序。

【讨论】:

你先生,应该喝啤酒!! 制作 3 杯啤酒。我可以确认此修复程序有效。我正在开发 Cordova 6.2.0,它成功了! 再来一杯啤酒;)谢谢 我不完全明白你在说什么,但我在那行代码上做了一个 grep,它在我删除的 Mapbox 插件中,然后构建成功.. 疯狂的东西,但另一个这里的啤酒 正如彼得所说,我添加了 cordova-plugin-mapbox,它有一个 cdvMinSdkVersion 为 15 的 mobile-mapbox.gradle 文件。现在我想知道,你有没有找到一个不那么 hacky 的解决方案,而不是自己编辑插件的文件?我不确定从哪个方向解决问题.. config.xml、mapbox、其他配置选项?奇怪的是,我的构建错误是:Suggestion: use tools:overrideLibrary="org.xwalk.core" to force usagewhich 提到了 xwalk(我们最近还添加了人行横道插件),但修复的是 mapbox。【参考方案3】:

在您应用的代码编辑器中, 按 Ctrl+Shift+F 搜索minSDKVersion 替换为所需的版本号

【讨论】:

效果很好!不要在 build 文件夹中替换。 非常简单而且效果很好。谢谢。【参考方案4】:

从 2.14.0 版开始,minSdkVersion 已增加到 16。如果您希望您的应用程序使用较低的 minSdkVersion 并希望利用最新的 SDK,请为 API 16 以下的版本禁用 PayPal,添加 xmlns:tools="http://schemas.android.com/tools在清单的 xml 声明中,并将以下 sn-p 添加到您的 AndroidManifest.xml:

<uses-sdk android:minSdkVersion="INSERT_YOUR_DESIRED_minSdkVersion_HERE" tools:overrideLibrary="com.paypal.android.sdk.payments"/>

【讨论】:

【参考方案5】:

更简单的方法是:

-转到 Build.gradle(Module:app)。

-将 minSDKVersion 15 更改为 minSDKVersion 16。

-同步您的项目。

【讨论】:

【参考方案6】:

这里有一些上下文来理解这些事情:

默认情况下,当导入 minSdkVersion 值高于主清单文件的库时,会发生错误并且无法导入该库。要使合并工具忽略此冲突并导入库,同时保持应用程序的较低 minSdkVersion 值,请将 overrideLibrary 属性添加到标记。属性值可以是一个或多个库包名(逗号分隔),表示可以覆盖主清单的 minSdkVersion 的库。

例如,如果您的应用的主清单应用了这样的 overrideLibrary:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.app"
          xmlns:tools="http://schemas.android.com/tools">
  <uses-sdk android:targetSdkVersion="22" android:minSdkVersion="2"
            tools:overrideLibrary="com.example.lib1, com.example.lib2"/>

然后可以合并以下清单,而不会出现 标签的错误,并且合并后的清单会保留应用清单中的 minSdkVersion="2"。

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

【讨论】:

【参考方案7】:

如果是 Hybrid/Ionic 应用程序,可以通过更改 config.xml 中的 minSdkVersion 来解决此类问题。

【讨论】:

【参考方案8】:

像魅力一样工作:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.aspireone.myapplication"
    xmlns:tools="http://schemas.android.com/tools">

    <uses-sdk android:targetSdkVersion="28" android:minSdkVersion="14"
            tools:overrideLibrary="com.allyants.draggabletreeview"/>

来自此错误消息:

 <!-- Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version 15 declared in library [com.github.jakebonk:DraggableTreeView:1.0.1] C:\Users\ASPIREone\.gradle\caches\transforms-1\files-1.1\DraggableTreeView-1.0.1.aar\45f4095d2e68f3e9a1fbc4b73c7f9c33\AndroidManifest.xml as the library might be using APIs not available in 14
        Suggestion: use a compatible library with a minSdk of at most 14,
            or increase this project's minSdk version to at least 15,
            or use tools:overrideLibrary="com.allyants.draggabletreeview" to force usage (may lead to runtime failures) -->

【讨论】:

【参考方案9】:

在我添加“jitPak”库以查看 PDF 后,问题开始出现,问题的根本原因是 build.gradel(模块级别)中的第 13 行。只需将版本从 15 更改为 16,即可解决问题。

android        // line 7 of build.gradle (module App)
    compileSdkVersion 28
    buildToolsVersion "29.0.2"
    defaultConfig 
        applicationId "com.example.web_app"
        minSdkVersion 15    // change this to 16
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    

【讨论】:

【参考方案10】:

这解决了我的问题。 右键单击android studio中的应用程序文件夹,选择“打开模块设置”|或者直接按 F4。转到 Flavours 选项卡并将 Min Sdk 版本更改为最新。 问题解决了。

【讨论】:

【参考方案11】:

我使用@Naga 的建议,它很有效。 我更改的 config.xml 不在项目的根目录中,而是在 platforms/android/app/src/main/res/xml/config.xml

AndroidManifests.xml 中的minSdkVersion 不会再次被覆盖

【讨论】:

当我使用cordova build android生成应用程序时,它会自动覆盖该值。【参考方案12】:

根据您的要求增加 minSdkVersion,希望它会得到解决。

【讨论】:

【参考方案13】:

试试这个。 在 build.gradle(module: app) 中将 minSdkVersion 15 更改为 minSdkVersion 16

【讨论】:

【参考方案14】:

我会向你证明,更简单的方法是应用以下 3 个步骤:

1) 转到Build.gradle(Module:app)

2) 将 minSDKVersion 15 更改为 minSDKVersion 16。或17

// 19(for projectfolder/platforms/android/CordovaLib/AndroidManifest.xml)

3) 同步您的项目。

【讨论】:

【参考方案15】:

转到 build.grade 并在 defaultConfig 中有 minSdkversion 并将其更改为 17 并立即同步,我的意思是它至少对我有用

【讨论】:

【参考方案16】:

pubspec.yaml 中将您的版本'audioplayers: ^0.17.1' 降级为'audioplayers: ^0.16.1' 并发布获取'audioplayers: ^0.16.1' 的依赖项。

【讨论】:

【参考方案17】:

我也有同样的问题。我解决它在 C:\Users\"Username"\.gradle\gradle.properties cdvMinSdkVersion 更改为 19

org.gradle.daemon=false
org.gradle.jvmargs=-Xmx2048m
android.useAndroidX=false
android.enableJetifier=false
cdvMinSdkVersion=19

我是在 Android Studio 中导入项目时发现的。

【讨论】:

【参考方案18】:

在 android/app/build.gradle 中设置 minSdkVersion:

android 
    defaultConfig 
        minSdkVersion 20
    

【讨论】:

【参考方案19】:

我修复它的方法是转到 platforms\android 文件夹并从我的 VS 代码编辑器中为 minSdkVersion 执行 find-in-folder 并将所有 minSdkVersion=16 替换为 minSdkVersion=19,无论科尔多瓦是否动态生成它.在那之后,一切对我来说都很好。

【讨论】:

【参考方案20】:

这个错误信息意味着paypal库的最低安卓版本是16,而不是你自己应用的版本。

如果您使用的第 3 方库之一的最低版本比您的版本大,您必须将 minSdkVersion 增加到它们。

【讨论】:

【参考方案21】:

转到文件夹 /platforms/android/android.json 将 minsdk 版本更改为您想要的任何版本


       "xml": "<preference name=\"android-minSdkVersion\" value=\"22\" />",
       "count": 1
,

然后转到可能把你搞砸的插件/plugins/yourplugin/plugin.xml 将偏好值也更改为您想要的数字

<preference name="android-minSdkVersion" value="22" />

然后检查您的 /platforms/android/build.gradle 文件并确认相同的值

project.ext 
      defaultBuildToolsVersion="29.0.2" //String
      defaultMinSdkVersion=22 //Integer - Minimum requirement is Android 5.1
      defaultTargetSdkVersion=29 //Integer - We ALWAYS target the latest by default
      defaultCompileSdkVersion=29 //Integer - We ALWAYS compile with the latest by default

【讨论】:

【参考方案22】:

我认为尝试删除文件夹 android/App/build.gradle 中的实现“com.google.firebase:firebase-analytics”。在执行上述长步骤之前

【讨论】:

【参考方案23】:

显示的错误意味着您使用的软件包不支持 minSdkVersion 15。因此请尝试在“Project/android/app/build.gradle”中更改以下内容: minSdkVersion 从 15 到 16 或更高

【讨论】:

【参考方案24】:

请按照以下三个步骤解决 ionic 3 中的此错误

    projectfolder/platforms/android/CordovaLib/AndroidManifest.xml

    <uses-sdk android:minSdkVersion="16" />
    

    <uses-sdk android:minSdkVersion="19" />
    

    projectfolder/platforms/android/gradle.properties

    cdvMinSdkVersion=16 or X
    

    cdvMinSdkVersion=19
    

    projectfolder/config.xml 改变

    <preference name="android-minSdkVersion" value="16" />
    

    <preference name="android-minSdkVersion" value="19" />  
    

【讨论】:

以上是关于uses-sdk:minSdkVersion 15 不能小于库中声明的版本 16的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 错误:清单合并失败:uses-sdk:minSdkVersion

清单合并失败:uses-sdk:minSdkVersion 7 不能小于库中声明的版本 14

uses-sdk:minSdkVersion 16 不能小于库中声明的版本 23

uses-sdk:minSdkVersion 16 不能小于库 [:audioplayers] 中声明的版本 23

flutter_smart_cropper uses-sdk:minSdkVersion 16 不能小于库中声明的版本 19

错误记录Android 应用导入 ijkplayer 报错 ( uses-sdk:minSdkVersion 19 cannot be smaller than version 21 decl )