1

我在我的 PCL 项目中使用 Xamarin.Forms.Maps 和 Microsoft.AppCenter.Push。最近我尝试将我的 Push 更新到最新版本,但它与 Maps 发生冲突,因为需要不同版本的 Xamarin.GooglePlayServices.Base。

严重性代码说明项目文件行抑制状态错误 NU1107 Xamarin.GooglePlayServices.Base 检测到版本冲突。将 Xamarin.GooglePlayServices.Base 71.1610.0 直接安装/引用到项目 XXX.Android 以解决此问题。

XXX.Android -> Microsoft.AppCenter.Push 2.5.0 -> Xamarin.Firebase.Messaging 71.1740.0 -> Xamarin.Firebase.Iid 71.1710.0 -> Xamarin.Firebase.Iid.Interop 71.1601.0 -> Xamarin.GooglePlayServices .Base (>= 71.1610.0)

XXX.Android -> Xamarin.Forms.Maps 4.3.0.947036 -> Xamarin.GooglePlayServices.Maps 60.1142.1 -> Xamarin.GooglePlayServices.Base (= 60.1142.1)。

Push 需要 71 版,而 Maps 需要 60 版。我可以知道如何解决这个问题,我很好奇为什么 Maps 不能使用更高版本?它不向后兼容吗?

谢谢你。

4

2 回答 2

0

已编辑

如果您阅读评论,有一种说法是您可以手动安装依赖项。

在这种情况下,通过访问Xamarin.Forms.Maps 的 NuGet 存储库,您可以在依赖项列表中看到它需要Xamarin.GooglePlayServices.Maps

只需确保您已经安装了依赖项,或者只是将它们添加到您的 Android 解决方案(我还添加了Xamarin.Android.Support.v7.AppCompat)。

通过执行这些步骤,我可以同时运行 Xamarin.Forms.Maps (v4.4.0.991477) 和 Microsoft.AppCenter.Push (v2.6.4)。


GitHub 相关 repo 上有一个问题,似乎已修复。

请参考以下链接

Xamarin.Froms.Maps 和 Microsoft.AppCenter.Push 之间的 NuGet 版本冲突

您可以检查问题的整个演变过程。

于 2020-01-11T23:26:07.970 回答
0

是的,正如你所说,我已经重现了这个问题。

根据错误日志,我们知道问题是虽然Xamarin.Forms.MapsNuget已经更新到了较新的版本,但是Xamarin.GooglePlayServices.Base这个nuget中的包( )并没有同步更新到更高的版本(71.1610.0)。这应该是这个Nuget的问题。我们可以在这里将其报告为错误:https ://github.com/xamarin/Xamarin.Forms/issues

目前,为了保持代码正常工作,我们可以做的是保持两个 Nuget 版本同步。只需安装 nugetMicrosoft.AppCenter.Push 2.1.1和 nuget Xamarin.Forms.Maps 4.3.0.947036

于 2019-11-13T07:01:27.533 回答