【问题标题】:Upgrading Android API Target level to 12 from 11 in Xamarin Forms在 Xamarin Forms 中将 Android API 目标级别从 11 升级到 12
【发布时间】:2022-10-06 09:54:48
【问题描述】:

我正在使用 Xamarin 表单,并且根据 Google Play 商店要求 (https://developer.android.com/google/play/requirements/target-sdk) 需要将 Android SDK 级别从 11 升级到 12。我已将“导出”标志添加到所有活动、服务和应用程序中使用的接收器。还更新了 PendingIntent 标志的可变性。但是,当我运行应用程序时,我遇到了错误。

~/Droid/obj/Debug/AndroidManifest.xml(5,5):错误 AMM0000:/~Droid/obj/Debug/lp/95/jl/AndroidManifest.xml 警告: 命名空间 \'com.google.android.gms.analytics\' 用于:AndroidManifest.xml、AndroidManifest.xml。 android:exported 需要为元素 <service#crc643a9353f6fb65c51a.FirebaseService> 显式指定。当相应组件定义了 Intent 过滤器时,面向 Android 12 及更高版本的应用需要为 android:exported 指定显式值。有关详细信息,请参阅https://developer.android.com/guide/topics/manifest/activity-element#exported。 目录 \'obj/Debug/lp/95\' 来自 \'Xamarin.GooglePlayServices.Analytics.Impl.dll\'。

/~Droid/obj/Debug/AndroidManifest.xml(5,5): Error AMM0000: android:exported needs to be explicitly specified for element <service#crc643a9353f6fb65c51a.FirebaseIdService>. Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

/~Droid/obj/Debug/AndroidManifest.xml(5,5): Error AMM0000: android:exported needs to be explicitly specified for element <receiver#crc64df999be563077fc4.BootReceiver>. Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

以下是我的应用程序中使用的 Nuget 包。

有关如何解决此问题的任何建议?

  • 请不要将错误消息作为图像发布
  • 更新了错误消息

标签: c# android xamarin xamarin.forms xamarin.android


【解决方案1】:

好吧,这对您不起作用的明确原因是因为您的 Firebase 库,它们确实很古老。我很惊讶您在 Android 11 之前仍然没有遇到任何问题。

解决此问题的最佳方法是将以下库升级到至少这些版本:

Xamarin.Firebase.Analytics 120.0.1
Xamarin.Firebase.Analytics.Impl 116.3.0
Xamarin.Firebase.Messaging 123.0.3

祝你好运

如果您有任何疑问,请随时回复

【讨论】:

    【解决方案2】:

    您可以按照以下步骤解决问题:

    1.将目标 SDK 设置为 30(以消除 31+ 错误)。

    2.打开应用程序的清单 (AndroidManifest.xml) 并单击编辑窗格底部的“合并清单”选项卡。

    3.转到所有库的单个清单文件(如果已创建合并清单,则可以跳过此步骤,您可以查看合并清单)

    4.搜索是否有任何类型为活动、服务、接收者或提供者但没有导出属性的条目,对于每个条目,请遵循“修复找到的条目”部分。

    5. 将目标 SDK 设置回 31(或更改为 30 之前的任何值)。

    如何修复已知错误(android:exported="..." 和 tools:node="merge" 都是必须的),请参考以下内容:

    <receiver
    android:name=""
    android:exported="false or true"
    tools:node="merge" />
    
    <Service
    android:name=""
    android:exported="false or true"
    tools:node="merge" />
    

    【讨论】:

      猜你喜欢
      • 2018-10-26
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 2022-06-13
      • 2022-11-24
      • 2021-06-01
      • 1970-01-01
      • 2016-03-01
      相关资源
      最近更新 更多