在调试模式下在 sdk gphone64 x86 64 上启动 lib\main.dart...
lib\main.dart:1
C:\Users\lucks\OneDrive\Desktop\intern ndroid pp\src\debug\AndroidManifest.xml:15:9-22:20 错误:
android:exported 需要为元素
android:exported
指定显式值。有关详细信息,请参阅 https://developer.android.com/guide/topics/manifest/activity-element#exported。
FAILURE:构建失败并出现异常。
Manifest 合并失败:需要为元素
显式指定 android:exported。当相应组件定义了意图过滤器时,面向 Android 12 及更高版本的应用需要为 指定显式值。有关详细信息,请参阅 https://developer.android.com/guide/topics/manifest/activity-element#exported。android:exported
使用 --stacktrace 选项运行以获取堆栈跟踪。 使用 --info 或 --debug 选项运行以获得更多日志输出。 使用 --scan 运行以获得完整的见解。
2秒内构建失败 异常:Gradle 任务 assembleDebug 失败,退出代码为 1 退出(sigterm)
图片链接在这里 我的清单中没有“flutterlocalnotifications”接收器。那么我在哪里添加这个显式值???
尝试将其添加到 AndroidManifest.xml 中。位于
<application> .... </application>
<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"
android:exported="true">
</receiver>
为了解释这个问题,从 Android 12 开始,对于 Activity、BroadCast Receiver、Service 等应用程序组件,必须在 Manifest 组件中显式添加
android:exported=""
标志。 来源
这可能是真的,也可能是假的。
如果标记为true,其他应用程序/系统可以通过Intent启动特定组件。
例如,对于启动器活动,我们需要将活动标记为
android:exported="true"
。这样系统启动器/其他启动器应用程序就可以通过 Intent 调用启动器 Activity 来启动应用程序。
在大多数情况下,没有必要将其标记为 true。
在这种情况下,添加exported = false 也可以。所以建议设为 false。
<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"
android:exported="false">
</receiver>
实际上这些针对 Android 12 的变更flutter_local_notifications 插件已经添加,并且可以在最新版本上修复。
但是当您通过
flutter pub add flutter_local_notifications
添加软件包时,它只是添加旧版本的插件。就我而言,它正在下载版本 8.2.0
,但在编写答案时最新可用版本是 13.0.0
。
所以当我明确地做到了13.0.0
时,这个问题就不会出现了。
flutter 添加旧版本的原因可能是其他包的依赖。
所以最后,总结一下,在
flutter_local_notifications: ^13.0.0
中显式地制作 pubspec.yaml
将解决这个问题。
在您的 Android 清单文件中添加以下行
<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"
android:exported="true">
</receiver>
如果我们有旧版本的
flutter_local_notifications
插件,例如^5.0.0+1,在最新的android版本上执行时会导致错误,可以添加ScheduledNotificationBootReceiver ⬇️⬇️⬇️
顺便说一下
futter_local_notifications
插件已经在最新版本上添加并修复了这个问题。
<receiver
android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"
android:exported="false">
</receiver>