微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 NDK本机 C++ 代码部分构建 librealsense android 应用程序?

如何解决使用 NDK本机 C++ 代码部分构建 librealsense android 应用程序?

我正在尝试构建一个 Android 应用。

  1. 该应用利用 librealsense android 包装器来获取帧(返回 com.intel.realsense.librealsense.FrameSet)。
  2. 然后将获得的帧传递给一些本机 C++ 函数以进行进一步处理。本机 C++ 函数采用 rs2::frameset 作为输入参数,例如int NativeFrameProcessing(rs2::frameset& frames)。这是通过使用 NDK 实现的。

通过查看librealsense示例android程序,android中的帧获取部分似乎很清楚。此外,librealsense 代码还展示了通过将本机指针转换为 jlong 来将帧传递到本机部分。

我不清楚的是如何在 android 部分和 NDK(本机代码)部分指定 librealsense 依赖项。

在android中,依赖被指定为:

repositories {
    maven{
        url "https://dl.bintray.com/intel-realsense/librealsense-dev"
    }
}

dependencies {
    implementation 'com.intel.realsense:librealsense:2.41.0+@aar'
}

在 NDK(原生代码部分)中,我使用 CMake 生成编译配置。

find_package(realsense2 required)

但我猜这样的话,CMake 会找到当前系统中安装的 librealsense(在这种情况下是 Ubuntu,因为我在 Ubuntu 中做项目),它不是针对 android 设备构建的,并且版本可能与下载的AAR android库不一致。

那么如何正确指定对 librealsense 的依赖?例如,指向 CMake 以某种方式使用下载的 AAR 库,因此 android 部分和 NDK 部分都依赖于相同的 librealsense ?提前致谢!

解决方法

根据 Android documentation,AAR 已经包含原生程序集 -
这意味着,您不需要构建它并且您可以删除 CMake 支持。

如果您想自己构建 AAR,只需按照 build instructions 操作即可。

如果出于某种原因,您可能想直接链接 realsense2.so,您可以通过解压缩从 AAR 中简单地提取它 - 或者自己构建 AAR 并从输出中获取它。>

工具链绝对不会关心主机系统上安装的程序集 - 即使两者都可能产生 x86_64 程序集,它们也会链接到不同的库,因此不兼容且不可互换。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。