热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在AndroidStudio项目中高效集成JNI方法

本文详细介绍了如何在现有的AndroidStudio项目中集成JNI(JavaNativeInterface),包括下载必要的NDK和构建工具,配置CMakeLists.txt文件,以及编写和调用JNI函数的具体步骤。
集成NDK与构建工具
  1. 在已打开的项目中,通过菜单栏选择 Tools > SDK Manager 进入SDK管理界面。
  2. 切换到 SDK Tools 标签页。
  3. 勾选 LLDBCMakeNDK 选项,并确保这些工具被正确安装到您的开发环境中。
  4. 点击 Apply 按钮,随后在出现的确认对话框中点击 OK 以开始安装过程。
  5. 安装完成后,再次点击 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 SystemCMake,并指定 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项目的完整流程。若有任何疑问或建议,欢迎留言交流。


推荐阅读
author-avatar
nd子听雨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有