返回

在安卓模拟器中加载随 C# Avalonia 应用程序发布的原生依赖项:完整指南

Android

在安卓模拟器中加载随 C# (Avalonia) 应用一起发布的原生依赖项

概述

当你使用包含原生依赖项的 NuGet 包在 Visual Studio 中创建 C# Avalonia 应用程序时,你需要采取特定步骤才能确保安卓模拟器找到并加载这些依赖项。本指南将介绍这些步骤,帮助你解决应用程序中可能遇到的运行时异常。

解决方案

1. 将 lib.so 文件添加到 lib 文件夹*

在应用程序项目中,创建名为 "lib" 的文件夹,并将从 NuGet 包的 "runtimes\android-x64\native" 文件夹中复制的 "lib*.so" 文件粘贴到其中。

2. 修改 .csproj 文件

在 ".csproj" 文件中,添加以下行:

<ItemGroup>
  <AndroidNativeLibrary Include="lib/*.so" />
</ItemGroup>

3. 设置 LD_LIBRARY_PATH 环境变量

在应用程序的 "Main" 方法中,添加以下代码:

System.Environment.SetEnvironmentVariable("LD_LIBRARY_PATH", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "lib"));

故障排除

问题: 仍然收到原生库未找到的错误。

解决方法:

  • 检查你是否正确复制了 "lib*.so" 文件。
  • 确保 ".csproj" 文件包含正确的 "AndroidNativeLibrary" 项。
  • 确认你已正确设置了 "LD_LIBRARY_PATH" 环境变量。
  • 使用 Android Monitor 工具检查应用程序是否正在加载原生库。

结论

通过遵循上述步骤,你将能够成功在安卓模拟器中加载随 C# Avalonia 应用程序一起发布的原生依赖项。这些步骤适用于使用 Avalonia UI 构建的安卓应用程序。

常见问题解答

1. 这些步骤是否适用于其他类型的应用程序?

不,这些步骤专门适用于使用 Avalonia UI 构建的安卓应用程序。其他类型的应用程序可能需要不同的修改。

2. 为什么需要设置 LD_LIBRARY_PATH 环境变量?

LD_LIBRARY_PATH 环境变量告诉安卓应用程序在哪里查找原生库。

3. 我可以在哪里了解更多关于 Avalonia 和原生依赖项的信息?

有关 Avalonia 的更多信息,请访问:https://avaloniaui.net/

有关在 Avalonia 中使用原生依赖项的更多信息,请访问:https://avaloniaui.net/docs/native-dependencies/

4. 我在哪里可以找到有关如何使用 Android Monitor 工具的信息?

有关 Android Monitor 工具的更多信息,请访问:https://developer.android.com/studio/debug/monitor

5. 我在哪里可以获得技术支持?

如果你遇到任何问题,可以在 GitHub 上的 Avalonia 论坛(https://github.com/AvaloniaUI/Avalonia/discussions)或 Discord 服务器(https://discord.com/invite/w75zc9A)上寻求技术支持。