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

问题描述 投票:0回答:3

在调试模式下在 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 12 及更高版本的应用需要为

android:exported
指定显式值。有关详细信息,请参阅 https://developer.android.com/guide/topics/manifest/activity-element#exported

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

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

Manifest 合并失败:需要为元素 显式指定 android:exported。当相应组件定义了意图过滤器时,面向 Android 12 及更高版本的应用需要为

android:exported
指定显式值。有关详细信息,请参阅 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”接收器。那么我在哪里添加这个显式值???

android flutter android-manifest
3个回答
36
投票

尝试将其添加到 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
将解决这个问题。


2
投票

在您的 Android 清单文件中添加以下行

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

0
投票

如果我们有旧版本的

flutter_local_notifications
插件,例如^5.0.0+1,在最新的android版本上执行时会导致错误,可以添加ScheduledNotificationBootReceiver ⬇️⬇️⬇️

顺便说一下

futter_local_notifications
插件已经在最新版本上添加并修复了这个问题。

<receiver
        android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"
        android:exported="false">
    </receiver>
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.