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

集成flutterlocalnotification遇AndroidManifest.xml<receiver>元素位置错误

Flutter集成flutter_local_notifications插件构建失败修复方案

问题现象

构建Flutter应用时失败,报错提示:

在Infinix X688B上以调试模式启动lib\main.dart...

FAILURE: 构建因异常失败。

* 错误原因:
任务 ':app:processDebugResources' 执行失败。
> 执行com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction时发生故障
   > Android资源链接失败
     C:\Users\Vincent\Desktop\PPlanner\myplanner\build\app\intermediates\packaged_manifests\debug\AndroidManifest.xml:17: 错误: 在<manifest>中发现意外元素<receiver>。

* 建议尝试:
> 使用--stacktrace选项获取堆栈跟踪。
> 使用--info或--debug选项获取更多日志输出。
> 使用--scan选项获取完整分析信息。

* 更多帮助请访问 https://help.gradle.org

构建失败,耗时27秒
正在运行Gradle任务 'assembleDebug'...                             28.7秒
异常: Gradle任务assembleDebug执行失败,退出码为1

问题根源

查看生成的调试版AndroidManifest.xml,发现**元素直接放在了根标签下**,而AndroidManifest规范要求:所有组件(包括)必须嵌套在标签内部,否则会触发资源链接错误。

从调试版Manifest代码可以看到,在<uses-permission android:name="android.permission.INTERNET" />之后,存在一个不属于的:

<receiver
    android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"
    android:exported="true" >
</receiver>

修复步骤

  1. 打开项目主AndroidManifest.xml文件(路径:android/app/src/main/AndroidManifest.xml)
  2. 确保所有元素都严格嵌套在标签内部
  3. 如果是插件自动合并导致的重复,可以在主Manifest中使用tools:node="remove"标签移除多余的外部

修正后的主Manifest示例

<?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.example.myplanner">
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

   <application
        android:label="myplanner"
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize"
            android:exported="true"
            tools:node="merge">
            <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>
        <!-- 所有receiver必须放在application内部 -->
        <receiver
          android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"
          android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
</manifest>
  1. 清理构建缓存并重新构建:
flutter clean
flutter run

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:17:56