如何解决使用 NDK本机 C++ 代码部分构建 librealsense android 应用程序?
我正在尝试构建一个 Android 应用。
- 该应用利用 librealsense android 包装器来获取帧(返回
com.intel.realsense.librealsense.FrameSet
)。 - 然后将获得的帧传递给一些本机 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 举报,一经查实,本站将立刻删除。