Ionic Capacitor项目运行报Manifest merger failed错误如何解决
报错原因
你的Ionic Capacitor项目当前配置的最低支持Android SDK版本为21(对应Android 5.0),但项目依赖的androidx.security:security-crypto:1.0.0库最低要求SDK版本为23(对应Android 6.0),因此出现清单文件合并失败的报错。
以下是三种解决方案,按优先度排序:
方案1:提升项目minSdk版本到23(最推荐,无兼容风险)
Ionic Capacitor项目不要直接修改安卓原生目录下的配置,避免后续同步配置时被覆盖,正确操作步骤:
- 找到项目根目录下的
capacitor.config.ts(若为JSON配置则是capacitor.config.json),添加安卓minSdk配置:
若为TS配置:
若为JSON配置:import { CapacitorConfig } from '@capacitor/cli'; const config: CapacitorConfig = { // 保留你的其他原有配置 android: { minSdkVersion: 23, }, }; export default config;{ // 保留你的其他原有配置 "android": { "minSdkVersion": 23 } } - 回到项目根目录执行命令,同步配置到安卓原生项目:
npx cap sync android - 重新执行
ionic capacitor run android --open运行项目即可。
目前Android 6.0以下的设备全球市场占比不足1%,该方案基本不会影响你的用户覆盖范围。
方案2:替换兼容minSdk 21的依赖插件
如果你确实需要兼容Android 5.0/5.1设备,可按以下步骤操作:
- 排查当前项目引入的所有Capacitor插件,找到是哪个插件依赖了
androidx.security:security-crypto:1.0.0库 - 查找该插件的历史低版本,或者功能相同的替代插件,要求其依赖的安全加密库支持minSdk 21,替换原有插件即可解决报错
方案3:强制覆盖库的minSdk要求(不推荐,可能存在运行时崩溃风险)
如果你必须保留当前minSdk 21的配置,同时要使用当前的插件,可按报错提示强制绕过编译校验:
- 打开你贴出的
AndroidManifest.xml文件,先给manifest标签添加tools命名空间,修改后如下:<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.jeep.app.ionic.angular"> - 在manifest标签下、application标签之前添加如下配置:
<uses-sdk tools:overrideLibrary="androidx.security" />
修改后重新编译即可绕过报错,但要注意:该方案只是强制通过编译,如果你用到了androidx.security库在SDK 21上不存在的API,App在Android 5.0/5.1设备上运行时会直接崩溃。
内容的提问来源于stack exchange,提问作者walexy
相关产品推荐
相关产品推荐

