返回

JNI 入门与高级技巧,手把手助你轻松跨越 JNI 雷区

Android

搭建 JNI 工程

首先,你需要在 Android Studio 中创建一个新的 JNI 工程。

  1. 打开 Android Studio,点击 "New Project"。
  2. 选择 "Empty Activity" 模板,输入项目名称和包名。
  3. 在 "Add an Activity" 对话框中,选择 "Java with C++ Support"。
  4. 点击 "Finish" 完成工程创建。

加载 so 文件

接下来,你需要将你的 so 文件加载到 Java 代码中。

  1. 将你的 so 文件复制到项目的 jniLibs 目录中。
  2. 在 Java 代码中使用 System.loadLibrary() 方法加载 so 文件。
System.loadLibrary("my_so");

调用本地方法

现在,你可以使用 Java 代码调用本地方法了。

  1. 在 Java 代码中创建一个类,该类将包含本地方法。
  2. 使用 native 声明本地方法。
  3. 在本地方法中,编写 C/C++ 代码来实现该方法。
public class MyJNI {
    static {
        System.loadLibrary("my_so");
    }

    public native String sayHello();
}
#include <jni.h>

JNIEXPORT jstring JNICALL Java_MyJNI_sayHello(JNIEnv *env, jobject obj) {
    return (*env)->NewStringUTF(env, "Hello from JNI!");
}

使用 Camke

如果你想在 JNI 中使用 C++ 11 或更高版本的特性,你可以使用 Camke 来编译你的 C/C++ 代码。

  1. 在你的项目的根目录下创建一个 CMakeLists.txt 文件。
  2. 在 CMakeLists.txt 文件中添加以下内容:
cmake_minimum_required(VERSION 3.4.1)

add_library(my_so SHARED
    src/main/cpp/my_so.cpp)

target_link_libraries(my_so
    log)

install(TARGETS my_so DESTINATION lib)
  1. 在命令行中运行以下命令来生成 so 文件:
cmake .
make

结语

JNI 是一个强大的工具,它允许 Java 代码与 C/C++ 代码进行交互。通过学习 JNI,你可以将 C/C++ 代码的强大功能引入到你的 Java 项目中,从而实现更复杂的功能。我希望这篇文章能够帮助你入门 JNI 开发,并为你提供一些有用的技巧。如果你有任何问题,欢迎随时提出。