You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android集成Flutter模块遇Manifest合并失败,不改minSdk如何解决?

解决多Flutter依赖导致的Android Manifest合并minSdk冲突问题

问题场景

现有Android(Java)项目集成Flutter模块,运行时出现Manifest合并错误,且多个Flutter依赖包均报此类错误,不想修改主Android项目的minSdkVersion(当前为19)。

错误示例:

Manifest merger failed : uses-sdk:minSdkVersion 19 cannot be smaller than version 21 declared in library [:payu_checkoutpro_flutter] 
~/pm_module/.android/plugins_build_output/payu_checkoutpro_flutter/intermediates/merged_manifest/debug/AndroidManifest.xml as the library might be using APIs not available in 19
    Suggestion: use a compatible library with a minSdk of at most 19,
        or increase this project's minSdk version to at least 21,
        or use tools:overrideLibrary="com.payubiz.payu_checkoutpro_flutter" to force usage (may lead to runtime failures)

项目结构:

--Android_A  --- 主Android源码
--Flutter_B  --- 主Flutter代码
    --Flutter_C  --- Flutter Git子模块

Flutter依赖声明:

  • Flutter_C/pubspec.yaml:
Flutter_B:
     path: ../../Flutter_B
  • Flutter_B/pubspec.yaml:
Flutter_C:
     path: Flutter_C

Android_A/settings.gradle配置:

include ':app'
setBinding(new Binding([gradle: this]))
evaluate(new File(
        settingsDir.parentFile,
        'Flutter_B/.android/include_flutter.groovy'
))

已尝试git reset、flutter clean、flutter pub get等操作,问题未解决。

解决方案

1. 批量添加tools:overrideLibrary强制合并

在主Android项目的Android_A/app/src/main/AndroidManifest.xml中,通过tools:overrideLibrary批量指定所有冲突的依赖包,强制Manifest合并:

  1. 首先在<manifest>标签中添加tools命名空间:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.your.package.name">
  1. 在<uses-sdk>标签中添加多个冲突包的包名,用逗号分隔:
<uses-sdk
    android:minSdkVersion="19"
    android:targetSdkVersion="33"
    tools:overrideLibrary="com.payubiz.payu_checkoutpro_flutter, com.example.otherconflictpackage1, com.example.otherconflictpackage2"/>

注意:此方法可能导致运行时崩溃(若依赖包使用了minSdk19不支持的API),需在Android 4.4(API19)设备上全面测试功能。

2. 通过Gradle统一覆盖所有子模块的minSdkVersion

在主Android项目的根build.gradle(或Android_A/app/build.gradle)中添加配置,强制所有子模块(包括Flutter插件)使用指定的minSdkVersion:

subprojects {
    afterEvaluate { project ->
        if (project.hasProperty('android')) {
            android {
                defaultConfig {
                    minSdkVersion 19
                }
            }
        }
    }
}

该配置会遍历所有子项目,将它们的minSdkVersion统一设置为19,避免逐个修改依赖的manifest。同样需注意测试低版本设备的兼容性。

3. 回退依赖版本至兼容状态

由于之前配置可正常运行,推测是依赖包版本更新导致minSdk要求提升。可通过以下步骤回退:

  1. 查看Flutter_B/pubspec.lock文件,找到之前能正常运行的依赖版本号;
  2. 在Flutter_B/pubspec.yaml中指定依赖的具体版本(而非使用默认的最新版本),例如:
dependencies:
  payu_checkoutpro_flutter: ^x.y.z  # 替换为之前兼容的版本号
  1. 执行flutter pub get更新依赖。

内容的提问来源于stack exchange,提问作者Kishor Pawar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 01:35:25