Android 中使用的 C++ 库的最佳架构
Best Architecture for C++ Libraries used in Android
我正在编译要在我的 Android 设备上使用的 c++ 库。
在编译库时,我没有考虑构建库的架构。
因此,我有一个 64 位动态 linked 共享库 x86_64,它只适用于 64 位系统。
我打算使用 JNA 工具将此库 link 添加到我的 android 设备。
为 android 体系结构和 JNA 编译我的 c++ 库的合适方法是什么。
您必须使用 Android NDK。
根据目标架构,您必须 select 适当的 toolchain/cross-compiler,例如ARM、MIPS 或 x86。
另见 Getting Started with the NDK
JNI 或 JNA 与库的构建方式无关。您必须为您的目标架构构建库,以便它可以在您的 phone 或平板电脑上使用。
要从 Java 访问此库,您可以使用 JNI or JNA。
使用 JNI,您必须在 C/C++ 中实现胶水代码。另一方面,使用 JNA,您做的或多或少是相同的,但您使用现有的库 (libffi) 并在 Java 中实现胶水代码。这是在运行时动态完成的,可能被认为类似于库的反射。
我正在编译要在我的 Android 设备上使用的 c++ 库。
在编译库时,我没有考虑构建库的架构。
因此,我有一个 64 位动态 linked 共享库 x86_64,它只适用于 64 位系统。
我打算使用 JNA 工具将此库 link 添加到我的 android 设备。
为 android 体系结构和 JNA 编译我的 c++ 库的合适方法是什么。
您必须使用 Android NDK。
根据目标架构,您必须 select 适当的 toolchain/cross-compiler,例如ARM、MIPS 或 x86。
另见 Getting Started with the NDK
JNI 或 JNA 与库的构建方式无关。您必须为您的目标架构构建库,以便它可以在您的 phone 或平板电脑上使用。
要从 Java 访问此库,您可以使用 JNI or JNA。
使用 JNI,您必须在 C/C++ 中实现胶水代码。另一方面,使用 JNA,您做的或多或少是相同的,但您使用现有的库 (libffi) 并在 Java 中实现胶水代码。这是在运行时动态完成的,可能被认为类似于库的反射。