安装Xamarin.Forms.Map插件后出现java.lang.IllegalArgumentException错误求解决
解决方案:解决Xamarin.Forms.Map安装后的重复类错误
嗨,这个错误我之前帮不少开发者排查过,本质就是Google Play Services相关库重复引用或者版本不匹配搞的鬼,尤其是Xamarin.Forms.Map这种依赖Google Maps的组件,特别容易碰到这类问题。结合你用的VS2017、Xamarin.Forms 2.5.0.280555这个版本,给你几个一步步解决的方案:
1. 统一所有Google Play Services库的版本
Xamarin.Forms.Map 2.5.x版本对Google Play Services的版本有特定依赖,不同版本的Google Play Services包混装就会触发这个重复类错误。你可以这么操作:
- 打开Visual Studio的NuGet包管理器,切换到你的Android项目(app.Android)
- 在「已安装」标签里,找到所有以
Xamarin.GooglePlayServices.开头的包(比如Base、Maps、Location等等) - 把这些包的版本统一调整为同一个值(Xamarin.Forms.Map 2.5.0.280555对应的推荐版本是42.1021.1,你可以参考这个来调整)
- 调整完成后,点击「确定」让NuGet自动处理依赖,之后清理并重新生成解决方案
2. 清理项目缓存与冗余文件
有时候旧的编译缓存会残留重复引用,导致报错无法消除,这时候可以做彻底清理:
- 右键你的解决方案 → 选择「清理解决方案」
- 右键Android项目 → 「卸载项目」,等待卸载完成后再右键选择「重新加载项目」
- 手动删除Android项目目录下的
bin和obj两个文件夹(这两个是编译缓存,删了不会影响项目) - 重启Visual Studio,然后重新生成整个解决方案
3. 核对Xamarin.Forms相关包的一致性
结合你提到的NuGet截图,一定要确保:
- Xamarin.Forms主包和Xamarin.Forms.Android包的版本完全一致(都是2.5.0.280555),版本不一致也可能间接导致依赖库冲突
- 检查其他第三方NuGet包,看有没有偷偷引入了不同版本的Google Play Services组件,如果有,要么调整该包的版本,要么移除不必要的包
4. 手动修改packages.config(如果NuGet管理器操作不顺)
如果NuGet管理器的自动调整不好用,你可以直接手动修改Android项目的packages.config文件:
- 在解决方案资源管理器里找到app.Android项目下的
packages.config,双击打开 - 找到所有类似
<package id="Xamarin.GooglePlayServices.Maps" version="xxx" targetFramework="monoandroid81" />的条目 - 把这些条目的
version属性改成同一个值,比如统一为42.1021.1 - 保存文件后,右键Android项目 → 「还原NuGet包」,让NuGet重新下载匹配版本的库
完成以上步骤后,先单独编译你的Android项目,如果还是报错,检查项目的「引用」节点,看看有没有重复的Google Play Services相关引用,要是有的话手动移除旧版本的引用即可。
内容的提问来源于stack exchange,提问作者Vibhav Patil
相关产品推荐
相关产品推荐

