gpt4 book ai didi

java - 如何通过 JNI 使用 native 代码创建 Java 库 (API)

转载 作者:行者123 更新时间:2023-11-30 03:49:44 25 4
gpt4 key购买 nike

我的问题如下。

我需要用 Java 创建一个库。到目前为止,一切都很好。与任何体面的 Java 库一样,它必须可以在任何 JVM 上使用。

但这里的困难在于这个库将包含大量本地代码

我对 JNI 有一些了解。我已经尝试使用 Android StudioAndroid NDK 在 Android 应用程序中用 Java 创建一些 native 方法。

太好了,我可以做很多 HelloWorld 示例。但是如何将其导出为库?

我的项目需要外部 C++ 库。我想包装这些库并在包装在 Java 库中的 JNI 包装器中使用它们。

请参阅以下架构: Java JNI API Schema

为了使事情更简单,以一个简单的 HelloWorld JNI API 为例。创建 Java 桌面应用程序(或其他任何应用程序)。导入 Helloworld JNI API(作为 jar),调用 String HelloWorldJNI_API.sayHello(String yourName) 并打印结果。

这里需要什么:

  1. JNI API 显然会将 sayHello() 方法声明为 native 方法;
  2. 参数 (String yourName) 被发送到 JNI ;
  3. JNI 代码调用一个内部很棒的 C++ so 库来处理数据并返回“你好”+“你的名字”(很棒,对吧?)
  4. JNI 代码将结果作为 jstring 返回
  5. 最后,Java API 将结果作为 String 返回瞧!

这个简单的例子应该向您展示我正在尝试做什么。

最佳答案

好吧,您的库将包含带有 java 包装器代码的 .jar 文件以及 native 文件(如果您使用的是基于 linux 的 .so,或者如果您使用的是 windows,则为 .dll)。

这里是乐趣的开始:

因为 native 是用处理器汇编语言编译的,所以你必须为所有支持的目标编译 .so(例如,对于所有具有 native 支持的 android,因为永远如此):armv5, armv7, armv7s, arm64

现在,您必须提供包含上述所有内容的存档。

在这种情况下,您需要一个独立的库,而不向开发人员提供代码。

如果你能提供代码,那么你就不用担心不同的架构。

关于java - 如何通过 JNI 使用 native 代码创建 Java 库 (API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32271114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com