首页 > 解决方案 > 我们如何在 Xamarin.forms 中添加 android nugets 而不仅仅是在 Xamarin.Android

问题描述

我正在尝试在 Xamarin Forms 项目中安装以下 NuGet(而不是在 Xamarin.Android 项目中)

我想MediaProjectionManager在没有平台特定条件的情况下访问我的 Xamarin 项目类中的 。请帮我解决一下这个。

现在,每当我尝试在 Xamarin Forms 项目中安装与 android 相关的 NuGet 包时,都会收到以下错误。

Error   NU1202  Package Xamarin.Android.Support.Vector.Drawable 28.0.0.3 is not compatible with netstandard2.1 (.NETStandard,Version=v2.1). Package Xamarin.Android.Support.Vector.Drawable 28.0.0.3 supports:
  - monoandroid60 (MonoAndroid,Version=v6.0)
  - monoandroid70 (MonoAndroid,Version=v7.0)
  - monoandroid71 (MonoAndroid,Version=v7.1)
  - monoandroid80 (MonoAndroid,Version=v8.0)
  - monoandroid81 (MonoAndroid,Version=v8.1)
  - monoandroid90 (MonoAndroid,Version=v9.0)    

Error Package restore failed. Rolling back package changes for .                    

如果我在 Xamarin 项目的 cs 文件中编写以下代码,并且如果我尝试从 Xamarin.Android 项目的 MainActivity.cs 文件访问以下对象,则会出现以下错误。

MediaProjection 对象在 XamarinFile 中不可用。它无法访问任何与 android 相关的函数或对象。

#if __ANDROID__
        public MediaProjection MediaProjection { get; set; }
#endif

XamarinFile.Instance.MediaProjection = manager.GetMediaProjection((int)resultCode, data);

标签: xamarinxamarin.formsxamarin.android

解决方案


您正在尝试将特定于 Android 的库安装到不兼容的 Xamarin .NET Standard/PCL 项目中。错误本身清楚地说明了这一点。如果您想为 Xamarin Forms 应用程序提供任何特定于平台的功能,则可以尝试为其创建自定义视图并在本机项目中编写自定义渲染器。在对应的native项目中,安装想要的包,实现你想要的。

有关更多详细信息,请参阅Xamarin 表单自定义呈现器文档

否则,请尝试将您的项目创建为共享项目而不是 .NET 标准项目。

有关更多详细信息,请参阅此处的共享项目文档


推荐阅读