C# 在Xamarin中以编程方式加载本机库

C# 在Xamarin中以编程方式加载本机库,c#,android,xamarin,xamarin.forms,xamarin.android,C#,Android,Xamarin,Xamarin.forms,Xamarin.android,我们的Xamarin应用程序支持一些特定于设备的硬件功能,用于打包RFID扫描仪的特定Android设备。我们不想把基本的应用程序和这个设备相关的东西混在一起,所以我们创建了一个单独的Xamarin库,其中包含这个设备的逻辑,它是Droid项目的一项资产。在应用程序启动期间,我们检查是否在这个特定的设备上,如果在,我们使用Assembly.load(…)以编程方式加载硬件特定的Xamarin库并激活它 我们遇到的问题是,设备制造商向我们提供了一些必须使用的本机android库(.so文件)。通常

我们的Xamarin应用程序支持一些特定于设备的硬件功能,用于打包RFID扫描仪的特定Android设备。我们不想把基本的应用程序和这个设备相关的东西混在一起,所以我们创建了一个单独的Xamarin库,其中包含这个设备的逻辑,它是Droid项目的一项资产。在应用程序启动期间,我们检查是否在这个特定的设备上,如果在,我们使用
Assembly.load(…)
以编程方式加载硬件特定的Xamarin库并激活它

我们遇到的问题是,设备制造商向我们提供了一些必须使用的本机android库(.so文件)。通常情况下,您会在Droid项目中使用build action
AndroidNativeLibrary
,但由于我们希望将与此设备相关的所有内容封装在一个单独的项目中,因此不希望这样做。我们尝试了以下方法:

  • 使用build action
    AndroidNativeLibrary
    将它们添加到特定于设备的Xamarin库中,但应用程序无法找到它们。它们可能未保存到磁盘,因此无法找到

  • 使用build action
    Embedded Resource
    将它们添加到特定于设备的Xamarin库中,并在库启动时将它们保存到磁盘,但应用程序在其中搜索其所需的本机库的任何位置都不可访问。因此,应用程序无法找到它们,库也无法工作


  • 我开始认为Android已经屏蔽了这种行为,但我仍然希望你们中的一些人能帮我一个好把戏。提前感谢。

    这是否相关@不,这是在Xamarin.Droid项目中包含.so文件时的常规方法。这是否相关@不,这是在Xamarin.Droid项目中包含.so文件时的常规方法。