使用本机库

Xamarin.Android 支持通过标准 PInvoke 机制使用本机库。 你还可以将不属于 OS 的其他本机库绑定到你的 .apk。

若要在 Xamarin.Android 应用程序中部署本机库,请将库二进制文件添加到项目中,并将其生成操作设置为 AndroidNativeLibrary

若要在 Xamarin.Android 库项目中部署本机库,请将库二进制文件添加到项目中,并将其生成操作设置为 EmbeddedNativeLibrary

请注意,由于 Android 支持多个应用程序二进制接口 (ABI),因此 Xamarin.Android 必须知道本机库是为哪个 ABI 生成的。 可以通过两种方法完成:

  1. 路径“探查”
  2. 通过使用项目文件中的 AndroidNativeLibrary/Abi 元素

通过路径探查,本机库的父目录名称用于指定库的目标 ABI。 因此,如果将 lib/armeabi/libfoo.so 添加到项目中,则 ABI 将被“探查”为 armeabi

或者,你可以编辑项目文件以显式指定要使用的 ABI:

<ItemGroup>
    <AndroidNativeLibrary Include="path/to/libfoo.so">
        <Abi>armeabi</Abi>
    </AndroidNativeLibrary>
</ItemGroup>

有关使用本机库的详细信息,请参阅本机库互操作

在 Visual Studio 中调试本机代码

如果使用 Visual Studio 2019Visual Studio 2017,则不必按上文所述修改项目文件。 可以通过将项目引用添加到 C++ 动态共享库 (Android) 项目,在 Xamarin.Android 解决方案内部生成和调试 C++。

若要在项目中调试本机 C++ 代码,请执行以下步骤:

  1. 双击项目属性,然后选择 Android 选项页。
  2. 向下滚动到“调试”选项
  3. 在“调试器”下拉菜单中,选择“C++”(而不是默认的“.NET (Xamarin)”)。

Visual Studio C++ 开发人员可以查看 SanAngeles_NativeDebug 示例,尝试从 Visual Studio 2019 或带 Xamarin 的 Visual Studio 2017 调试 C++。有关详细信息,请参阅我们的博客文章