android - Android 中使用的 C++ 库的最佳架构

标签 android c++ jna

我正在编译要在我的 Android 设备上使用的 C++ 库。

在编译库时,我没有考虑构建库的架构。

因此,我有一个 64 位动态链接共享库 x86_64,它只能在 64 位系统上运行。

我打算使用 JNA 工具将该库链接到我的 android 设备。

为 android 架构和 JNA 编译我的 c++ 库的合适方法是什么。

最佳答案

您必须使用 Android NDK .

根据目标架构,您必须选择合适的工具链/交叉编译器,例如ARM、MIPS 或 x86。

另见 Getting Started with the NDK


JNI 或 JNA 与库的构建方式无关。您必须为您的目标架构构建库,以便它可以在您的手机或平板电脑上使用。

要从 Java 访问此库,您可以使用 JNIJNA .

使用 JNI,您必须在 C/C++ 中实现胶水代码。另一方面,使用 JNA,您做的大致相同,但您使用现有的库 (libffi) 并在 Java 中实现胶水代码。这是在运行时动态完成的,可能被认为类似于库的反射。

关于android - Android 中使用的 C++ 库的最佳架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40127335/

相关文章:

android - classes.jar' 已经包含条目 'META-INF/module_name_debug.kotlin_module' ,无法覆盖

android - 使 Android 2.1 上的蓝牙无限期可发现

java - 如何使用 socks 配置 Android SDK 管理器?

c++ - 为什么在 shared_ptr 只取一个时 unique_ptr 取两个模板参数?

c++ - 带有动态数组的 std::max

Java JNA-Jar应用程序在32位Windows系统中挂起

java - JNA 中的 Marshal.PtrToStructure 等效项

Android自定义守护进程UI线程

c++ - 关于运算符重载的查询,复数上的示例简单代码,添加

java - 使用JNA在java中调用C++库