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

Flutter应用Android12安装失败:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

问题排查与解决方案

Android 12(API 31)对Manifest的校验逻辑远严于旧版本,除了Activity,所有带intent-filter的组件(Service、BroadcastReceiver、ContentProvider)都必须显式声明android:exported属性,仅处理Activity的设置不足以覆盖所有场景。以下是针对性排查步骤:

1. 全面校验Manifest中带intent-filter的组件

打开AndroidManifest.xml,逐一检查以下组件:

  • 所有<activity>(包括Flutter插件自动引入的第三方组件)
  • 所有<service>
  • 所有<receiver>
  • 所有<provider>

只要组件包含<intent-filter>标签,必须明确添加android:exported="true"或android:exported="false",不能留空。示例:

<receiver android:name=".BootReceiver" android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

2. 确认targetSdkVersion达标

Android 12要求应用targetSdkVersion至少为31,打开android/app/build.gradle检查:

android {
    defaultConfig {
        targetSdkVersion 31 // 必须≥31,建议直接设置为最新兼容版本
    }
}

3. 排查Manifest合并冲突

部分旧版Flutter插件的Manifest未适配Android 12,会与主Manifest产生合并冲突。可通过以下方式查看最终生效的Manifest:

  • 使用Android Studio的Build > Analyze APK功能,选择打包后的APK,在Manifest标签页查看完整合并内容,定位未声明android:exported的组件
  • 终端执行flutter build apk --debug,解压build/app/outputs/apk/debug/app-debug.apk,解码查看内部的AndroidManifest.xml(可使用AXMLPrinter2工具)

4. 检查Manifest非法内容

  • 组件的android:name属性不能存在拼写错误或特殊字符
  • 确认权限声明符合Android 12要求,例如POST_NOTIFICATIONS需显式声明
  • 排查是否存在重复的组件定义

5. 更新依赖库版本

确保Flutter SDK及所有插件为最新版本,旧版插件大概率未适配Android 12的Manifest规则。执行命令更新:

flutter pub upgrade

重点检查与系统交互类插件(推送、定位、分享等)的版本。

若以上步骤仍无法解决,可提供合并后的完整Manifest内容及错误日志中的具体行号,以便精准定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:15:24