返回

JNI 在 Android 开发中的初学者指南

Android

如果你是一名 Android 开发人员,并且希望扩展应用程序的功能,那么 JNI(Java Native Interface)将是一个强大的工具。JNI 允许你将 Java 代码与本机代码(如 C 或 C++)集成,从而访问底层系统功能并提高应用程序的性能。

在本教程中,我们将逐步指导你完成在 Android 上使用 JNI 的入门步骤,从设置你的开发环境到编写和调用本机代码。

第 1 步:设置开发环境

要开始使用 JNI,你需要设置你的开发环境。确保你已安装以下软件:

  • Android Studio
  • Java 开发工具包 (JDK)
  • Android NDK(本机开发工具包)

第 2 步:创建 Android 项目

使用 Android Studio 创建一个新的 Android 项目。在“创建新项目”对话框中,选择“空活动”模板并命名你的项目。

第 3 步:启用 JNI

要启用 JNI,你需要在项目中添加一些配置。

  • 在项目根目录下创建一个名为 jni 的目录。
  • app/build.gradle 文件中添加以下代码:
externalNativeBuild {
    cmake {
        path file('jni/CMakeLists.txt')
    }
}
  • jni/CMakeLists.txt 中,添加以下代码:
cmake_minimum_required(VERSION 3.4.1)
add_library(native-lib SHARED
    src/main/cpp/native-lib.cpp)

第 4 步:编写本机代码

现在你可以编写本机代码了。在 jni/main/cpp/native-lib.cpp 文件中,添加以下代码:

#include <jni.h>
jstring Java_com_example_myapplication_MainActivity_stringFromJNI(JNIEnv *env, jobject /* this */) {
    std::string hello = "Hello from JNI!";
    return env->NewStringUTF(hello.c_str());
}

第 5 步:调用本机代码

在你的 Java 代码中,你可以使用 System.loadLibrary() 加载本机库并调用本机方法。在 MainActivity.java 中,添加以下代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Load the native library
        System.loadLibrary("native-lib");

        // Call the native method
        String message = stringFromJNI();
        TextView textView = findViewById(R.id.text_view);
        textView.setText(message);
    }

    public native String stringFromJNI();
}

第 6 步:编译并运行

编译并运行你的应用程序。你应该会看到 "Hello from JNI!" 显示在屏幕上。

结论

恭喜!你已经完成了在 Android 上使用 JNI 的入门之旅。通过集成 Java 和本机代码,你可以提高应用程序的性能并访问更广泛的系统功能。随着你对 JNI 的了解加深,你可以探索更多高级主题,例如线程、异常处理和内存管理。