从Android Java调用本机函数 - JNI的替代品

Calling native functions from Android Java - alternative to JNI

本文关键字:JNI 替代品 函数 本机 Android Java 调用      更新时间:2023-10-16
这可能是

一个非常新手的问题,但我正在编写一个需要使用C++编写的.so库的Android应用程序。.so 由几个类组成,并且是通用C++,而不是 JNI。

除了JNI之外,有没有办法从Android Java应用程序调用C++函数?我所看到的关于 JNI 的所有内容都表明您必须重写本机代码以特定于 JNI,如果您只得到一个 .so,那真的很不方便。

在 Android 4.0.3 中,有哪些替代方法可以从 Java 应用程序调用本机函数?编写一个小型 JNI-C++ 程序来调用C++函数,然后可以从 Java 调用,这有多简单?

Eclipse 中有什么可以简化这个过程的吗?

我可能不应该对没有更优雅的解决方案感到惊讶。

我不相信有比您建议的为库编写 JNI 包装器更优雅的解决方案了。无论如何,这可能不是一个好主意,因为您应该为要支持的每个体系结构编译所有本机代码的单独版本。仅仅附加到编译库意味着你被它的架构所束缚。

这不是特定于Android的,但你应该看看Java Native Access(JNA)。它允许您使用 libffi 访问本机代码(不使用 JNI)。