【问题标题】:Nuget: Using Xamarin Forms and Google GCM packages togetherNuget:一起使用 Xamarin Forms 和 Google GCM 包
【发布时间】:2017-10-02 02:39:11
【问题描述】:

我正在我的 Xamarin Forms Android 应用上实现推送通知,目前正在安装所需的 NuGet 包。

但是,我遇到了包冲突问题:Xamarin Google Play Services (GCM) 版本 42.1001.0 和 Xamarin Forms 版本 25.1.0 无法安装在同一个项目上,这似乎是由于依赖关系。

我从 Xamarin 论坛 https://forums.xamarin.com/discussion/57283/unable-to-find-a-version-of-xf-compatible-with 读到,这些包需要它们的依赖项的确切版本,这是不幸的,因为存在一些重叠的依赖包。

有没有办法解决这个问题?

安装 Xamarin Forms 和 Google Play 服务时的安装日志:

Attempting to resolve dependency 'Xamarin.GooglePlayServices.Base (= 42.1001.0)'.
Attempting to resolve dependency 'Xamarin.GooglePlayServices.Basement (= 42.1001.0)'.
Attempting to resolve dependency 'Xamarin.Build.Download (≥ 0.4.2)'.
Attempting to resolve dependency 'Xamarin.Android.Support.v4 (≥ 25.1.0)'.
Attempting to resolve dependency 'Xamarin.Android.Support.Compat (= 25.1.0)'.
Attempting to resolve dependency 'Xamarin.Android.Support.Core.UI (= 25.1.0)'.
Attempting to resolve dependency 'Xamarin.Android.Support.Core.Utils (= 25.1.0)'.
Attempting to resolve dependency 'Xamarin.Android.Support.Fragment (= 25.1.0)'.
Attempting to resolve dependency 'Xamarin.Android.Support.Media.Compat (= 25.1.0)'.
Attempting to resolve dependency 'Xamarin.GooglePlayServices.Tasks (= 42.1001.0)'.
Attempting to resolve dependency 'Xamarin.GooglePlayServices.Iid (= 42.1001.0)'.
Installing 'Xamarin.Build.Download 0.4.2'.
Successfully installed 'Xamarin.Build.Download 0.4.2'.
Installing 'Xamarin.Android.Support.Compat 25.1.0'.
Successfully installed 'Xamarin.Android.Support.Compat 25.1.0'.
Installing 'Xamarin.Android.Support.Core.UI 25.1.0'.
Successfully installed 'Xamarin.Android.Support.Core.UI 25.1.0'.
Installing 'Xamarin.Android.Support.Core.Utils 25.1.0'.
Successfully installed 'Xamarin.Android.Support.Core.Utils 25.1.0'.
Installing 'Xamarin.Android.Support.Media.Compat 25.1.0'.
Successfully installed 'Xamarin.Android.Support.Media.Compat 25.1.0'.
Installing 'Xamarin.Android.Support.Fragment 25.1.0'.
Successfully installed 'Xamarin.Android.Support.Fragment 25.1.0'.
Installing 'Xamarin.Android.Support.v4 25.1.0'.
Successfully installed 'Xamarin.Android.Support.v4 25.1.0'.
Installing 'Xamarin.GooglePlayServices.Basement 42.1001.0'.
Successfully installed 'Xamarin.GooglePlayServices.Basement 42.1001.0'.
Installing 'Xamarin.GooglePlayServices.Tasks 42.1001.0'.
Successfully installed 'Xamarin.GooglePlayServices.Tasks 42.1001.0'.
Installing 'Xamarin.GooglePlayServices.Base 42.1001.0'.
Successfully installed 'Xamarin.GooglePlayServices.Base 42.1001.0'.
Installing 'Xamarin.GooglePlayServices.Iid 42.1001.0'.
Successfully installed 'Xamarin.GooglePlayServices.Iid 42.1001.0'.
Installing 'Xamarin.GooglePlayServices.Gcm 42.1001.0'.
Successfully installed 'Xamarin.GooglePlayServices.Gcm 42.1001.0'.
Install failed. Rolling back...
Updating 'Xamarin.Android.Support.v4 23.3.0' to 'Xamarin.Android.Support.v4 25.1.0' failed. Unable to find versions of 'Xamarin.Android.Support.Animated.Vector.Drawable, Xamarin.Android.Support.Vector.Drawable, Xamarin.Android.Support.v7.AppCompat, Xamarin.Android.Support.v7.RecyclerView, Xamarin.Android.Support.Design, Xamarin.Android.Support.v7.MediaRouter' that are compatible with 'Xamarin.Android.Support.v4 25.1.0'

Google Play 服务时的安装日志然后 Xamarin Forms:

Attempting to resolve dependency 'Xamarin.Android.Support.v4 (≥ 23.3.0)'.
Attempting to resolve dependency 'Xamarin.Build.Download (≥ 0.4.2)'.
Attempting to resolve dependency 'Xamarin.Android.Support.Compat (= 25.1.0)'.
Attempting to resolve dependency 'Xamarin.Android.Support.Core.UI (= 25.1.0)'.
Attempting to resolve dependency 'Xamarin.Android.Support.Core.Utils (= 25.1.0)'.
Attempting to resolve dependency 'Xamarin.Android.Support.Fragment (= 25.1.0)'.
Attempting to resolve dependency 'Xamarin.Android.Support.Media.Compat (= 25.1.0)'.
Attempting to resolve dependency 'Xamarin.Android.Support.Design (≥ 23.3.0)'.
Attempting to resolve dependency 'Xamarin.Android.Support.v7.AppCompat (= 23.3.0)'.
Attempting to resolve dependency 'Xamarin.Android.Support.v4 (= 23.3.0)'.
Already referencing a newer version of 'Xamarin.Android.Support.v4'.

附:这是我的第一个问题帖子,所以如果我需要更多解释或细节,请告诉我。 :)

【问题讨论】:

  • 您的目标是什么Xamarin.Android 框架版本?
  • 编译(目标框架)设置为Use Latest Platform (Android 7.1 (Nougat)),目标Android版本设置为Use Compile using SDK version
  • 您使用的是哪个Xamarin.Forms 版本?
  • 版本 2.3.4.224(刚刚意识到问题的版本号完全错误,对此感到抱歉)
  • 我正在尝试安装 Xamarin Google Play Services - GCM 版本 42.1001.0

标签: xamarin xamarin.android xamarin.forms google-cloud-messaging nuget


【解决方案1】:

我刚刚将Xamarin.GooglePlayServices.Gcm v42.1001.0 添加到monoandroid71 目标中,带有最新的Xamarin.Forms(v2.3.4.231),最后得到了package.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Annotations" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Compat" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Core.UI" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Core.Utils" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Design" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Fragment" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Media.Compat" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Transition" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v4" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.AppCompat" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.CardView" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.MediaRouter" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.Palette" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.RecyclerView" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Vector.Drawable" version="25.3.1" targetFramework="monoandroid71" />
  <package id="Xamarin.Build.Download" version="0.4.4" targetFramework="monoandroid71" />
  <package id="Xamarin.Forms" version="2.3.4.231" targetFramework="monoandroid71" />
  <package id="Xamarin.GooglePlayServices.Base" version="42.1001.0" targetFramework="monoandroid71" />
  <package id="Xamarin.GooglePlayServices.Basement" version="42.1001.0" targetFramework="monoandroid71" />
  <package id="Xamarin.GooglePlayServices.Gcm" version="42.1001.0" targetFramework="monoandroid71" />
  <package id="Xamarin.GooglePlayServices.Iid" version="42.1001.0" targetFramework="monoandroid71" />
  <package id="Xamarin.GooglePlayServices.Tasks" version="42.1001.0" targetFramework="monoandroid71" />
</packages>

我剥离了包和引用并使用Xamarin.Forms v2.3.4.224 进行了尝试,结果是:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Compat" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Core.UI" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Core.Utils" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Design" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Fragment" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Media.Compat" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Transition" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v4" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.AppCompat" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.CardView" version="23.3.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.MediaRouter" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.Palette" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.v7.RecyclerView" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Android.Support.Vector.Drawable" version="25.1.0" targetFramework="monoandroid71" />
  <package id="Xamarin.Build.Download" version="0.4.4" targetFramework="monoandroid71" />
  <package id="Xamarin.Forms" version="2.3.4.224" targetFramework="monoandroid71" />
  <package id="Xamarin.GooglePlayServices.Base" version="42.1001.0" targetFramework="monoandroid71" />
  <package id="Xamarin.GooglePlayServices.Basement" version="42.1001.0" targetFramework="monoandroid71" />
  <package id="Xamarin.GooglePlayServices.Gcm" version="42.1001.0" targetFramework="monoandroid71" />
  <package id="Xamarin.GooglePlayServices.Iid" version="42.1001.0" targetFramework="monoandroid71" />
  <package id="Xamarin.GooglePlayServices.Tasks" version="42.1001.0" targetFramework="monoandroid71" />
</packages>

【讨论】:

  • 嗯,我完全卸载了 Xamarin.Forms v.2.3.4.224 并安装了 v.2.3.4.231 并且由于某种原因,packages.config 文件的版本号与您的依赖包不同。
  • 例如,第一个包的版本是 23.3.0,而您的版本是 25.1.0 &lt;package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.3.0" targetFramework="MonoAndroid71" /&gt;
  • @NickToh 对整个项目进行包更新
  • 是的,成功安装了Xamarin Google Play Services (GCM)! :D 非常感谢您的帮助,节省了我在电脑上敲打头并重新启动 100 次的时间!
【解决方案2】:

对于遇到同样问题的任何人,请尝试从项目级别更新所有包。如果出现错误,请尝试手动更新每个包,以管理员身份运行 Visual Studio 并重试几次(信不信由你,有一个讨厌的包在尝试这样做 4 次后更新!)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 2017-03-04
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多