android:exported 需要为元素 <receiver#com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver> 显式指定

Sun*_*apa 9 android android-manifest flutter

在调试模式下在 sdk gphone64 x86 64 上启动 lib\main.dart... lib\main.dart:1 C:\Users\lucks\OneDrive\Desktop\intern\android\app\src\debug\AndroidManifest.xml:15 :9-22:20 错误:需要为元素 <receiver#com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver> 显式指定 android:exported。android:exported当相应组件定义了意图过滤器时,面向 Android 12 及更高版本的应用需要指定显式值。有关详细信息,请参阅https://developer.android.com/guide/topics/manifest/activity-element#exported 。

失败:构建失败并出现异常。

  • 出了什么问题:任务“:app:processDebugMainManifest”执行失败。

清单合并失败:需要为元素 <receiver#com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver> 显式指定 android:exported。android:exported当相应组件定义了意图过滤器时,面向 Android 12 及更高版本的应用需要指定显式值。有关详细信息,请参阅https://developer.android.com/guide/topics/manifest/activity-element#exported 。

  • 尝试:

使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。使用 --scan 运行以获得完整的见解。

2 秒内构建失败异常:Gradle 任务 assembleDebug 失败,退出代码 1 已退出 (sigterm)

图像链接在这里 https://i.stack.imgur.com/bUkHi.png 我的清单中没有“flutterlocalnotifications”接收器。那么我在哪里添加这个明确的值???

Gow*_*K K 35

尝试将其添加到 AndroidManifest.xml 中。内<application> .... </application>标签。

   <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"
              android:exported="true">   
    </receiver>
Run Code Online (Sandbox Code Playgroud)

更新:

为了解释这个问题,从Android 12开始,对于Activity、BroadCast Receiver、Service等应用程序组件,必须android:exported=""在Manifest组件中显式添加flag。来源

这可能是真的,也可能是假的。

如果标记为 true,其他应用程序/系统可以通过 Intent 启动特定组件。

例如,对于启动器活动,我们需要将活动标记为android:exported="true"。这样系统启动器/其他启动器应用程序就可以通过 Intent 调用启动器活动来启动应用程序。

在大多数情况下,没有必要将其标记为 true。

在这种情况下,添加exported = false 也可以。所以建议设为 false。

   <receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"
              android:exported="false">   
    </receiver> 
Run Code Online (Sandbox Code Playgroud)

实际上,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将解决这个问题。