解决新建Xamarin.Forms项目,编译Android项目时出错的问题

1、问题描述

在进行Xamarin.Forms开发时,可能会遇到各种各样的坑,其中比如我在上一篇博客中提到的问题:解决vs2015新建Android项目时,提示“未将对象引用设置到对象的实例”的问题。

而下面这个问题,是在新建Xamarin.Forms项目成功之后,编译Android项目时出现的问题。错误信息如下所示:

Please install package: 'Xamarin.Android.Support' available in SDK installer. Java library file C:\Users\Administrator.LiKui-PC\AppData\Local\Xamarin\Xamarin.Android.Support.v7.RecyclerView\24.2.1\content\classes.jar doesn't exist.

错误提示大概是说需要安装某个包,在某个路径下找不到某个文件。具体的错误信息如下图所示:

2、原因分析

通过stackoverflow中的Xamarin Support Package error及xamarin中的Project won’t build: Xamarin.Android.Support介绍得知,这是由于Android SDK缺失m2repository相关文件造成的。在使用Andorid SDK Manager安装SDK时未安装m2repository相关文件,而Visual Studio在编译时会从google的服务器进行下载。由于国内无法访问google,也就无法下载这些文件,所以你会发现编译的时候会卡在那里很久。

3、思路探索

3.1、自行下载文件

在百度找到了一个地址,虽然没有最新的,但感觉还是比较新了。点击这里去下载。

按名称排序,找到android_m2repository_rXX.zip文件,随便下载一个文件(我选择了一个最新的文件)。如下图所示:

解决新建Xamarin.Forms项目,编译Android项目时出错的问题_第1张图片

3.2、放到哪里?

这篇博客说将下载的zip文件拷贝到C:\Users\your user\AppData\Local\Xamarin\zips这个目前下。

3.3、尝试解决

步骤如下:
a、首先将Visual Studio关闭
b、删除文件夹 C:\Users\your user\AppData\Local\Xamarin(由于Visual Studio占用,可能要重试多次)
c、新建文件夹C:\Users\your user\AppData\Local\Xamarin\zips
d、打开Visual Studio并重新编译
这个时候由于去google下载m2repository文件,会持续比较长的时间。此时在上述路径下会生成一个0字节大小的zip文件,如下图所示:

解决新建Xamarin.Forms项目,编译Android项目时出错的问题_第2张图片

e、再次关闭Visual Studio(避免下面替换文件时提示占用)
f、将3.1下载的文件重命名为上图中的名称,并复制替换掉文件。
g、重新打开Visual Studio进行编译
不幸的是,上图中的文件又被替换为0字节!(后面发现是版本不对引起的)
h、重复e、f步骤,并将文件属性改为“只读”
i、再一次打开Visual Studio进行编译
出现文件访问被拒绝的错误(只读了肯定会被拒绝访问),同时还提示下载android_m2repository_r38.zip文件错误。如下图所示:

解决新建Xamarin.Forms项目,编译Android项目时出错的问题_第3张图片

从上图中可以看出,3.1中的下载的android_m2repository文件版本与Xamarin.Forms要求的版本不一致。

j、通过NuGet安装对应版本的Xamarin.Forms及相关Android支持包
没有办法,只能通过NuGet安装对应版本和Xamarin.Forms了。经过反复测试,发现android_m2repository_r36.zip对应的包如下:

Xamarin.Forms 2.2.0.45
Xamarin.Android.Support.Design 23.0.1.3
Xamarin.Android.Support.v4 23.0.1.3
Xamarin.Android.Support.v7.AppCompat 23.0.1.3
Xamarin.Android.Support.v7.CardView 23.0.1.3
Xamarin.Android.Support.v7.MediaRouter 23.0.1.3

k、重复上述e、f、g步骤
经过上述步骤,正常情况下应该可以成功编译通过了(虽然也等了比较久,可能是一些包的不同版本依赖关系存在冲突)。

解决本文所述问题的关键在于:
a、下载正确版本的m2repository文件进行替换。
b、通过Visual Studio编译时生成的.zip文件拿到要替换的文件名称。

4、参考资源

xamarin.forms新建项目android编译错误

解决Xamarin Android墙的问题

Xamarin.Android 反复报 Please Download android_m2repository_rxx.zip 的解决办法

你可能感兴趣的:(问题总结)