VS2017社区版Win7下Xamarin.Forms项目Android组件安装反复报错求助
反复出现Xamarin.Android支持组件安装错误(VS2017 Community + Windows 7)
问题背景
我在Visual Studio 2017 Community、Windows 7环境下开发Xamarin.Forms项目时,反复遇到以下报错:
尝试为'MobileApp.Android'项目安装所需Android组件时发生错误。该项目要求本地安装以下组件:
缺失的组件列表
- Xamarin.Android.Support.Animated.Vector.Drawable
- JavaLibraryReference:
android_m2repository_r29.zip-m2repository/com/android/support/animated-vector-drawable/23.3.0/animated-vector-drawable-23.3.0.aar-23.3.0.0 - AndroidResources:
android_m2repository_r29.zip-m2repository/com/android/support/animated-vector-drawable/23.3.0/animated-vector-drawable-23.3.0.aar-23.3.0.0
- JavaLibraryReference:
- Xamarin.Android.Support.Design
- JavaLibraryReference:
android_m2repository_r29.zip-m2repository/com/android/support/design/23.3.0/design-23.3.0.aar-23.3.0.0 - AndroidResources:
android_m2repository_r29.zip-m2repository/com/android/support/design/23.3.0/design-23.3.0.aar-23.3.0.0
- JavaLibraryReference:
- Xamarin.Android.Support.v7.AppCompat
- JavaLibraryReference:
android_m2repository_r29.zip-m2repository/com/android/support/appcompat-v7/23.3.0/appcompat-v7-23.3.0.aar-23.3.0.0 - AndroidResources:
android_m2repository_r29.zip-m2repository/com/android/support/appcompat-v7/23.3.0/appcompat-v7-23.3.0.aar-23.3.0.0
- JavaLibraryReference:
- Xamarin.Android.Support.v7.MediaRouter
- JavaLibraryReference:
android_m2repository_r29.zip-m2repository/com/android/support/mediarouter-v7/23.3.0/mediarouter-v7-23.3.0.aar-23.3.0.0 - AndroidResources:
android_m2repository_r29.zip-m2repository/com/android/support/mediarouter-v7/23.3.0/mediarouter-v7-23.3.0.aar-23.3.0.0
- JavaLibraryReference:
- Xamarin.Android.Support.v7.RecyclerView
- JavaLibraryReference:
android_m2repository_r29.zip-m2repository/com/android/support/recyclerview-v7/23.3.0/recyclerview-v7-23.3.0.aar-23.3.0.0 - AndroidResources:
android_m2repository_r29.zip-m2repository/com/android/support/recyclerview-v7/23.3.0/recyclerview-v7-23.3.0.aar-23.3.0.0
- JavaLibraryReference:
已排查的情况
- 网络连接正常,组件压缩包可正常下载;
- 压缩包未损坏,可手动解压;
- 即使项目最终构建成功,该问题仍会反复出现;
- 已查阅近3年相关的50余篇帖子,尝试了所有公开解决方案,但均无法彻底解决问题。
针对该问题的深度解决方案
我明白这个反复报错的情况有多棘手——尤其是在常规方案都失效的情况下。结合VS2017 + Windows 7的旧环境特性,以下是几个针对性的处理方法:
1. 手动替换Xamarin组件缓存文件
Xamarin会将下载的组件缓存到本地目录,有时缓存的文件关联会出错,手动替换可以强制修复:
- 找到Xamarin缓存目录:
C:\Users\<你的用户名>\AppData\Local\Xamarin\zips,删除该目录下所有与android_m2repository_r29.zip相关的压缩包; - 手动解压你已经下载好的
android_m2repository_r29.zip,找到每个缺失组件对应的.aar文件; - 进入对应组件的缓存目录(例如
C:\Users\<你的用户名>\AppData\Local\Xamarin\Xamarin.Android.Support.Animated.Vector.Drawable\23.3.0),将解压后的.aar文件复制到该目录,替换原有文件(如果存在); - 清理项目的
bin和obj目录,重启Visual Studio后重新构建项目。
2. 修复Xamarin.Android SDK配置
旧版本VS的Xamarin配置容易出现路径关联问题:
- 打开VS2017的
Tools -> Options -> Xamarin -> Android Settings,确认Android SDK Location指向正确的路径(通常是C:\Program Files (x86)\Android\android-sdk); - 打开Android SDK Manager,确保已经安装了Android Support Repository r29版本(如果没有,找到对应版本并安装);
- 尝试更新Xamarin.Android到VS2017支持的最新版本(注意:Windows 7下VS2017的Xamarin版本有上限,后续版本不再支持Win7,建议更新到VS2017兼容的最后稳定版)。
3. 手动编辑项目文件绑定本地组件
如果NuGet自动恢复始终出问题,可以绕过NuGet直接绑定本地组件:
- 在VS中卸载项目中所有
Xamarin.Android.Support.*相关的NuGet包; - 在项目根目录创建一个
Components文件夹,将解压好的所有.aar文件放入其中; - 右键项目 -> 编辑
.csproj文件,添加以下格式的引用(以animated-vector-drawable为例):<ItemGroup> <Reference Include="animated-vector-drawable-23.3.0"> <HintPath>Components\animated-vector-drawable-23.3.0.aar</HintPath> <AndroidAar>True</AndroidAar> </Reference> <!-- 为每个缺失的组件添加类似的引用 --> </ItemGroup> - 保存文件后重新加载项目,执行构建操作。
4. 彻底清理VS和NuGet缓存
缓存堆积是旧版本VS常见的问题,彻底清理可以解决隐性关联错误:
- 删除
C:\Users\<你的用户名>\AppData\Local\Xamarin目录下的zips和Cache文件夹; - 打开VS的
Tools -> NuGet Package Manager -> Package Manager Settings,点击Clear All NuGet Cache(s); - 重启电脑后重新打开项目,尝试恢复NuGet包并构建。
内容的提问来源于stack exchange,提问作者Hanch
相关产品推荐
相关产品推荐

