火球来了 2024-03-01 10:15 采纳率: 0%
浏览 41

MAUI 安卓app调用非托管dll库文件方法

问题:我在使用MAUI编写安卓APP,遇到一个问题,就是我调用的一个dll库文件,他会再调用一个非托管的dll库文件,如果我是在写WPF或者桌面应用只需要把这个非托管的dll放到Debug文件夹里程序就能运行,但是在MAUI中,我不知道应该如果设置,他一直报错找不到这个非托管的dll文件,
请大家提供一些方法

  • 写回答

3条回答 默认 最新

  • 关注

    火球来了 上午好☀️☀️☀️️
    本答案参考通义千问

    MAUI(Microsoft App Unification Interface)是.NET 6.0引入的新框架,用于构建跨平台的UWP、iOS和Android应用程序。当你需要在MAUI项目中引用非托管库(如DLL)时,你需要采取一些额外步骤来确保它们能够在Android平台上正确加载。以下是一些可能的解决方案:

    1. 将非托管库添加到项目中:

      • 步骤1: 将非委托的DLL文件复制到MauiApp项目的lib目录下,通常位于src/YourProjectName/Android目录下的lib子目录。
      • 步骤2: 如果是非C#编写的库,确保它支持Java Native Interface (JNI) 或者有一个可用的JNI桥接。
    2. 添加jni引用:

      • AndroidManifest.xml文件中,为非托管库添加<uses-library>标签,例如:
      <manifest ...>
        ...
        <uses-library android:name="com.nonmanaged.library.name" android:required="true" />
        ...
      </manifest>
      
    3. 设置资源路径:

      • 在你的代码中,使用AndroidEnvironment.GetFolderPath(AndroidEnvironment.ExternalFilesDir.Add("Library"))来获取非托管库的正确路径。这会确保库在Android的/data/data/your.package.name/lib目录下,这是系统查找动态链接库的标准位置。
    4. 处理DLL加载异常:

      • 使用AndroidJavaClassAndroidJavaObject来尝试加载和调用非托管库的方法,同时捕获可能出现的JavaException
    try
    {
        var libraryClass = new AndroidJavaClass("com.nonmanaged.library.name");
        var result = libraryClass.CallStaticMethod("yourNonDelegateMethod", parameters);
    }
    catch (JavaException e)
    {
        // Handle the exception
        Console.WriteLine($"Error loading non-delegate DLL: {e.Message}");
    }
    
    1. 兼容性考虑:

      • 检查非托管库是否支持Android API级别,确保你的Android项目设置正确。
    2. 使用AAR或JAR包:

      • 如果可能,考虑将非托管库打包成AAR或JAR包,并在MAUI项目中作为依赖添加,这样管理起来会更方便。

    请注意,这些步骤可能会因为非托管库的具体实现而有所不同,所以确保你查阅了非托管库的文档以获取正确的指导。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月1日
  • 创建了问题 3月1日

悬赏问题

  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问
  • ¥15 用MATLAB汇总拟合图
  • ¥15 智能除草机器人方案设计
  • ¥15 对接wps协作接口实现消息发送
  • ¥15 SQLite 出现“Database is locked” 如何解决?
  • ¥15 已经加了学校的隶属邮箱了,为什么还是进不去github education?😭
  • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题
  • ¥100 无网格伽辽金方法研究裂纹扩展的程序