java - Android: native 代码如何与java代码交互?

标签 java android android-ndk

按照 http://developer.android.com/tools/sdk/ndk/index.html 中的步骤操作。我有 动态库,例如:“armeabi”文件夹下的libhello-jni.so(ABI对应ARMv5TE)。

我的问题是: 如果我使用基于 ARMv5TE 的 CPU。我的动态库 libhello-jni.so 将使用 THE EABI。并且在该CPU上运行的JVM也将使用EABI,因为它们使用相同的ABI,因此它们可以相互交互。这是正确的吗?

最佳答案

请参阅 Android NDK 文档了解更多详细信息(请参阅 NDK 文件夹根目录下的 documentation.html)。

如果您引用CPU Arch ABIs部分,部分III.3解释了用于选择正确机器代码的机制:

When installing an application, the package manager service will scan the .apk and look for any shared library of the form lib/<primary-abi>/lib<name>.so [...] [it] ensures that the best machine code for the target device is automatically extracted from the package at installation time.

换句话说,系统会自动选择正确的库。

关于java - Android: native 代码如何与java代码交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19948182/

相关文章:

java - JSON 泛型集合反序列化

java - 从颜色中移除 alpha 但保留其纹理

javascript - 无法获得 GET 请求 axios 的响应

android - 无障碍服务安卓

c - 将大型数组从 java 传递到 c 时出现 jni 错误

android - 对 __android_log_print 的 undefined reference

java - 使用 Sockets Java 向服务器发送消息的错误请求

java - 集合的非泛型子类的构造函数

java - Windows 7 更新 KB4034664(2017 年 8 月)后多屏幕显示问题

android - 带有 Android NDK undefined reference 的 OpenCV