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 中定义也许我发现了问题。
我不想覆盖 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 usage
which 提到了 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"/>
然后可以合并以下清单,而不会出现
<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 )