【问题标题】:How can we add android nugets in Xamarin.forms and not only in Xamarin.Android我们如何在 Xamarin.forms 中添加 android nugets 而不仅仅是在 Xamarin.Android
【发布时间】:2020-02-04 07:38:20
【问题描述】:

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

  • Xamarin.Android.Support.core.Utiles
  • Xamarin.Android.Support.Animated.Vector.Drawable

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

现在每当我尝试在 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);

【问题讨论】:

  • 这是一个 Android 特定的库。不能在常用的 Forms 项目中安装。
  • @Jason 谢谢你的评论。我编辑了我的问题。我无法从 Xamarin.Android 项目中的 MainActivity.cs 文件访问用 Xamarin.Forms 编写的任何 android 相关对象
  • 我不知道您要做什么,但我几乎可以肯定您的做法是错误的。我相信我在之前的问题中已经告诉过您,在 .NET Standard 项目中使用 #if 是行不通的。我建议您写一个新问题来解释您要完成的工作,并询问实现它的正确方法。
  • 实现平台相关代码的最常见方式是通过 DI,docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/… 这就是为什么您不应该将任何 iOS 或 Android 特定包添加到 .NET Standard 项目的原因。
  • “条件编译最适合共享资产项目”。您使用的不是 SAP,而是 .NET 标准库。

标签: xamarin xamarin.forms xamarin.android


【解决方案1】:

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

有关详细信息,请参阅Xamarin Forms Custom Renderers documentation

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

有关详细信息,请参阅Shared Project documentation here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 2017-06-27
    • 2013-03-16
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多