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

集成flutter_local_notifications时AndroidManifest配置错误致构建失败

问题根因

构建报错的直接原因是AndroidManifest.xml结构不符合语法规则:
你把flutter_local_notifications插件所需的两个<receiver>广播组件,错误嵌套到了.MainActivity对应的<activity>标签内部。按照AndroidManifest规范,<receiver>和<activity>是平级组件,必须直接作为<application>标签的子节点存在,不能放在activity内部,所以AAPT资源链接阶段直接抛出unexpected element <receiver> found in <manifest><application><activity>错误。
另外你写的receiver类名存在不必要的换行,容易引发类路径匹配失败的问题。

修复方案
  • 调整标签位置:把两个receiver节点整体移动到</activity>闭合标签之后,和activity节点平级,归属于application节点下
  • 修正receiver的类名写法,去掉类名中间的换行,保证全类名连续
  • 补充缺失的必要权限:Android 13及以上版本需要申请通知运行时权限,Android 12及以上版本使用精准定时闹钟需要补充精准闹钟权限(时钟类应用必须加)

修正后的完整AndroidManifest.xml代码如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.clock_app">
    <!-- 原有基础权限 -->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.VIBRATE" />
    <!-- Android 13+ 通知发送权限 -->
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <!-- Android 12+ 精准定时闹钟权限,时钟类应用必加 -->
    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
   
    <application
        android:label="clock_app"
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher">
        <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: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>
        <!-- 广播接收者移到activity外部,类名不换行 -->
        <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
            </intent-filter>
        </receiver>
        <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />

        <!--  Flutter 嵌入配置,不要删除 -->
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
</manifest>
构建验证
  • 修改完成后先执行flutter clean清理旧的构建缓存,避免之前生成的错误manifest文件残留
  • 再执行flutter run重新构建项目,构建错误会直接消失
  • 注意在应用运行时动态申请POST_NOTIFICATIONS、SCHEDULE_EXACT_ALARM权限,否则高版本Android系统上通知、定时闹钟功能会被系统拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 05:24:29