作者:nd子听雨 | 来源:互联网 | 2024-12-17 16:46
本文详细介绍了如何在现有的AndroidStudio项目中集成JNI(JavaNativeInterface),包括下载必要的NDK和构建工具,配置CMakeLists.txt文件,以及编写和调用JNI函数的具体步骤。
集成NDK与构建工具
- 在已打开的项目中,通过菜单栏选择 Tools > SDK Manager 进入SDK管理界面。
- 切换到 SDK Tools 标签页。
- 勾选 LLDB、CMake 和 NDK 选项,并确保这些工具被正确安装到您的开发环境中。
- 点击 Apply 按钮,随后在出现的确认对话框中点击 OK 以开始安装过程。
- 安装完成后,再次点击 Finish 完成设置,最后点击 OK 关闭SDK Manager。
配置CMakeLists.txt文件
在项目的 src/main/
目录下创建一个新的子目录,命名为 jni
(此名称可根据需要自定义)。
在 src/main/jni/
目录中创建一个名为 CMakeLists.txt
的文本文件,该文件名必须保持不变。
编辑 CMakeLists.txt
文件,添加如下内容:
cmake_minimum_required(VERSION 3.4.1)
find_library(log-lib log)
接着,通过IDE菜单栏中的 File > Link C++ Project with Gradle 选项,选择 Build System 为 CMake,并指定 Project Path 为之前创建的 CMakeLists.txt
文件路径。
这一步骤相当于在 app/build.gradle
文件的 android
节点中添加了如下配置:
externalNativeBuild {
cmake {
path 'src/main/jni/CMakeLists.txt'
}
}
如果遇到版本冲突的错误信息,如 Error:Execution failed for task ':app:preDebugAndroidTestBuild'
,可以通过重建项目来解决。
实现并调用JNI函数
在 src/main/jni/
目录下创建一个新的C语言文件,例如 jnitext.c
,并在其中包含 jni.h
头文件。
在 CMakeLists.txt
文件中添加相应的库定义和链接指令:
add_library(jnitext SHARED jnitext.c)
target_link_libraries(jnitext ${log-lib})
注意,上述两行代码的顺序不可颠倒,否则可能导致编译错误。
接下来,在Java代码中加载本地库并声明原生方法:
static {
System.loadLibrary("jnitext");
}
public native String helloJni();
将光标置于 native
方法上,使用快捷键 Alt + Enter 并选择 Create... 选项,可以在C文件中自动生成对应的JNI函数实现:
JNIEXPORT jstring JNICALL
Java_com_example_jiang_hellojnitest_MainActivity_helloJni(JNIEnv *env, jobject instance) {
// 实现具体功能
return (*env)->NewStringUTF(env, "Hello from JNI!");
}
通过在UI组件(如 TextView
)中展示JNI函数返回的结果,可以验证JNI函数是否成功执行。
以上就是将JNI集成到Android Studio项目的完整流程。若有任何疑问或建议,欢迎留言交流。