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

Flutter使用--split-per-abi构建APK时Manifest元数据写入错误排查

Flutter构建ABI拆分APK时出现"cannot write metadata in manifest, cannot found manifest file"错误的成因与解决办法

成因分析

  • 使用--split-per-abi参数构建时,Flutter会为每个CPU架构生成独立APK,这个过程需要修改合并后的Manifest文件写入元数据,但构建缓存冲突或Flutter SDK与Android Gradle插件(AGP)版本不兼容,会导致构建流程找不到临时Manifest文件路径,触发该错误。
  • 你的AndroidManifest.xml格式本身无问题,错误出现在构建阶段生成的中间Manifest文件处理环节,而非原始文件。

解决办法

  • 清理构建缓存
    彻底清理缓存后重新构建:

    flutter clean
    

    手动删除项目android目录下的.gradle文件夹,再重新运行flutter build apk --split-per-abi --release。

  • 同步Flutter与AGP版本
    确保版本匹配:

    • 执行flutter upgrade将Flutter更新到最新稳定版;
    • 打开android/build.gradle,检查dependencies块中的AGP版本(比如Flutter 3.x对应AGP 7.0+),调整后在Android Studio中点击"Sync Project with Gradle Files"。
  • 显式指定Manifest文件路径
    在android/app/build.gradle的android代码块中添加配置,强制构建流程识别Manifest路径:

    android {
        sourceSets {
            main {
                manifest.srcFile 'src/main/AndroidManifest.xml'
            }
        }
    }
    
  • 确认ABI拆分配置
    在android/app/build.gradle中手动配置ABI拆分,避免命令行参数与Gradle配置冲突:

    android {
        splits {
            abi {
                enable true
                reset()
                include 'armeabi-v7a', 'arm64-v8a', 'x86_64'
                universalApk false
            }
        }
    }
    

你提供的AndroidManifest.xml内容

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.voltrac.fluttermap">
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <application android:label="La Palma VolTrac" android:name="${applicationName}" android:icon="@mipmap/launcher_icon" android:requestLegacyExternalStorage="true">
        <activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:screenOrientation="sensorLandscape" 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>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data android:name="flutterEmbedding" android:value="2" />
    </application>
</manifest>

内容的提问来源于stack exchange,提问作者Yash Raj Bharti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:30:56