集成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,发现**
从调试版Manifest代码可以看到,在<uses-permission android:name="android.permission.INTERNET" />之后,存在一个不属于
<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver" android:exported="true" > </receiver>
修复步骤
- 打开项目主AndroidManifest.xml文件(路径:
android/app/src/main/AndroidManifest.xml) - 确保所有
元素都严格嵌套在 标签内部 - 如果是插件自动合并导致的重复
,可以在主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>
- 清理构建缓存并重新构建:
flutter clean flutter run
内容的提问来源于stack exchange,提问作者Bobvin
相关产品推荐
相关产品推荐

