You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新NuGet包后IMvxLocationWatcher是否存在兼容性问题?

解决Xamarin.Android + MvvmCross更新NuGet后出现的System.MissingMethodException问题

问题根源分析

你遇到的System.MissingMethodException: Method 'Android.Gms.Common.Zze.IsGooglePlayServicesAvailable' not found错误,几乎可以确定是NuGet包版本不兼容导致的:

  • 谷歌Play服务系列的Xamarin绑定包(Xamarin.GooglePlayServices.*)内部依赖极强,版本不一致会引发方法/类找不到的问题
  • 更新NuGet时,可能MvvmCross插件(比如MvvmCross.Plugin.Location)与新版谷歌Play服务包的兼容性不匹配,毕竟Zze这类内部类的方法签名可能在新版本中被修改或移除了

分步解决方案

1. 统一谷歌Play服务相关包的版本

打开NuGet包管理器,筛选你的Android项目,找到所有以Xamarin.GooglePlayServices.开头的包(比如Xamarin.GooglePlayServices.Maps、Xamarin.GooglePlayServices.Location、Xamarin.GooglePlayServices.Base等),确保它们的版本号完全一致。

举个例子:如果Xamarin.GooglePlayServices.Maps是120.0.1,那其他同系列的包也要改成120.0.1,不能有的是119.0.0,有的是120.0.1。

2. 对齐MvvmCross与谷歌Play服务的版本兼容性

  • 如果你的MvvmCross是旧版本,尝试升级到最新稳定版(比如当前的MvvmCross 9.x系列),新版本通常会适配较新的谷歌Play服务包
  • 如果升级MvvmCross有困难,那就回退谷歌Play服务包到更新前的版本——你可以在NuGet包管理器的"已安装"标签里,点击包的版本下拉框,选择之前正常工作的版本

3. 清理编译缓存并重建项目

缓存问题有时候会伪装成版本兼容错误,按以下步骤操作:

  • 右键解决方案,选择「清理解决方案」
  • 删除解决方案根目录下的packages文件夹,以及每个项目下的bin和obj目录
  • 右键解决方案,选择「还原NuGet包」
  • 重新编译整个解决方案

4. 检查AndroidManifest.xml的必要配置

确保你的Android项目的AndroidManifest.xml中包含谷歌Play服务的版本元数据:

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

正常情况下NuGet会自动添加,但更新过程中可能意外丢失,手动补上再试试。

5. 验证设备/模拟器的谷歌Play服务状态

  • 实体设备:打开Google Play商店,确保「Google Play服务」是最新版本
  • 模拟器:选择带有「Google Play」标识的系统镜像,启动后打开模拟器内的Google Play商店,更新里面的Google Play服务到最新版

内容的提问来源于stack exchange,提问作者Drake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:54:45