【问题标题】:uses-sdk:minSdkVersion 15 cannot be smaller than version 16 declared in libraryuses-sdk:minSdkVersion 15 不能小于库中声明的版本 16
【发布时间】: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 版本

标签: android build ionic-framework


【解决方案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 中的此错误

                                        1. projectfolder/platforms/android/CordovaLib/AndroidManifest.xml

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

                                          <uses-sdk android:minSdkVersion="19" />
                                          
                                        2. projectfolder/platforms/android/gradle.properties

                                          cdvMinSdkVersion=16 or X
                                          

                                          cdvMinSdkVersion=19
                                          
                                        3. projectfolder/config.xml 改变

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

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

                                        【讨论】:

                                          猜你喜欢
                                          • 2021-04-10
                                          • 2021-05-15
                                          • 2021-03-14
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 1970-01-01
                                          相关资源
                                          最近更新 更多