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

Flutter构建App Bundle时AndroidManifest被覆盖报错解决方案

Flutter App Bundle构建Manifest覆写重复label问题修复方案

问题表现

构建App Bundle release包时,构建流程自动修改主AndroidManifest.xml,重复写入android:label(应用名称)字段,触发构建失败,无法生成可上传Google Play Console的AAB包。

根因定位

  • 主AndroidManifest.xml存在大量冗余硬编码内容:手动写入了所有Firebase、Google Play服务相关的service、activity、provider组件,这些组件本应由对应依赖插件在构建时通过manifest合并机制自动注入,手动硬编码会导致合并时属性重复。
  • 主manifest错误声明了已由Gradle接管的配置:硬写了android:versionCode、android:versionName、<uses-sdk>标签,和build.gradle中的配置重复,干扰合并流程。
  • app/build.gradle存在重复配置:defaultConfig块中重复定义了两次versionCode、versionName;同时注释掉了com.google.gms.google-services插件,导致Firebase配置注入逻辑异常,重复写入application属性。

修复步骤

  • 第一步:精简主AndroidManifest配置
    打开android/app/src/main/AndroidManifest.xml,删除所有冗余的自动生成组件、重复配置,仅保留核心自定义内容,参考配置如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.svapps.geografiebac.bacgeografie">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />
    <uses-permission android:name="com.google.android.gms.permission.AD_ID" />

    <application
        android:name="com.svapps.geografiebac.bacgeografie.10BacGeografie.10BacGeografie"
        android:appComponentFactory="androidx.core.app.CoreComponentFactory"
        android:icon="@mipmap/ic_launcher"
        android:label="bacgeografie"
        tools:replace="android:label">
        <activity
            android:name="com.svapps.geografiebac.bacgeografie.10BacGeografie.MainActivity"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:exported="true"
            android:hardwareAccelerated="true"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:windowSoftInputMode="adjustResize" >

            <meta-data
                android:name="io.flutter.embedding.android.NormalTheme"
                android:resource="@style/NormalTheme" />

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
</manifest>

注:tools:replace="android:label"属性会强制manifest合并时使用主文件中定义的应用名称,避免其他依赖注入的label值产生冲突。

  • 第二步:修正app层级build.gradle配置
    打开android/app/build.gradle,首先修复defaultConfig块的重复配置,删除硬编码的versionCode、versionName,修正后块内容如下:
defaultConfig {
    applicationId "com.svapps.geografiebac.bacgeografie"
    minSdkVersion 19
    targetSdkVersion 30
    multiDexEnabled true
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
}

取消google-services插件的注释,恢复Firebase正常注入逻辑:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

确认项目根目录下的build.gradle文件中,dependencies块已引入匹配版本的google-services classpath(和当前使用的Firebase BOM 29.0.4适配的版本为4.3.10即可)。

  • 第三步:清理缓存重新构建
    依次执行以下命令清理旧构建缓存,重新拉取依赖并打包AAB:
flutter clean
cd android && ./gradlew clean
cd ..
flutter pub get
flutter build appbundle --release

额外排查点

如果执行上述步骤后仍出现重复字段报错:

  • 打开构建生成的合并manifest文件,路径为android/app/build/intermediates/merged_manifests/release/AndroidManifest.xml,搜索重复的android:label字段,定位冲突来源。
  • 检查android/app/src/debug、android/app/src/profile目录下是否存在其他AndroidManifest文件,确认这些文件中没有重复定义application标签的label属性。
  • 检查Flutter项目中是否引入了会自动修改manifest的第三方构建脚本,暂时禁用这类脚本后重试构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 10:03:37