0

以下是我在操作系统版本为Android 12的手机上运行带有targetSDKVersion 31的 Android 应用程序时所面临的挑战

1) 应用程序未上传到商店 错误:- 您上传的 APK 或 Android App Bundle 具有带有意图过滤器的活动、活动别名、服务或广播接收器,但没有设置“android:exported”属性。此文件无法安装在 Android 12 或更高版本上。请参阅:developer.android.com/about/versions/12/behavior-changes-12#exported

2) 应用程序崩溃 java.lang.IllegalArgumentException: Targeting S+ (version 31 and above) 要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一。强烈考虑使用 FLAG_IMMUTABLE,仅当某些功能依赖于 PendingIntent 是可变的时才使用 FLAG_MUTABLE,例如,如果它需要与内联回复或气泡一起使用。所有待处理意图都需要FLAG_IMMUTABLE / FLAG_MUTABLE标记

请帮助如何解决这些问题????

4

1 回答 1

2

1) 应用程序未上传到商店错误:-您上传的 APK 或 Android App Bundle 具有带有意图过滤器的活动、活动别名、服务或广播接收器,但没有设置“android:exported”属性。此文件无法安装在 Android 12 或更高版本上。请参阅:developer.android.com/about/versions/12/behavior-changes-12#exported

解决方案:-从 12 开始,如果您的应用程序的 AndroidManifest.xml 或任何库中的任何活动/服务/接收器正在使用意图过滤器,那么它应该明确指定 android:exported 标记。您可以选择 AndroidManifest.xml 中的MergerManifest选项来识别哪个库具有服务和活动。

2) 应用程序崩溃 java.lang.IllegalArgumentException: Targeting S+ (version 31 and above) 要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一。强烈考虑使用 FLAG_IMMUTABLE,仅当某些功能依赖于 PendingIntent 是可变的时才使用 FLAG_MUTABLE,例如,如果它需要与内联回复或气泡一起使用。所有待处理意图都需要FLAG_IMMUTABLE / FLAG_MUTABLE标记

解决方案:-为所有 PendingIntents 添加 FLAG_IMMUTABLE。如果您的 PendingIntent 已经有一个标志,则使用 | 附加它。例如:- FLAG_UPDATE_CURRENT | FLAG_IMMUTABLEFLAG_CANCEL_CURRENT | FLAG_IMMUTABLE

于 2022-02-01T04:08:47.373 回答