首页 > 代码库 > Android JNI之JAVA调用C/C++层
Android JNI之JAVA调用C/C++层
摘要: 转载请声明:原文转自:http://www.cnblogs.com/xiezie/p/5929996.html
一、java调用本地函数的开发步骤:
1.编写本地方法的类(可以说是用来叙述本地方法的类):
2.编译这个类,生成该类的.class文件
在Android Studio下有很多方法:
- 点击Make Project
- Clean Project + Rebuild Project
- 运行或Debug APP
3.用javah命令生成该.class文件的.h头文件
在Android Studio中,可以打开命令终端并将目录切换到app/build/intermediates/classes/debug(编译生成的.class文件的存放路径)下:
终端上的命令:
cd app/build/intermediates/classes/debug
点击回车,再输入要>javah -jni 该类所在的包+该类名称,示例如下:
javah -jni com.x.mp4player.TestNdk
4.在src/main下建立jni文件夹、并将生成的.h文件复制到该目录下
5.创建一个同名的.cpp文件(用来编写C/C++代码)
生成的.h文件代码:
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_x_mp4player_TestNdk */#ifndef _Included_com_x_mp4player_TestNdk#define _Included_com_x_mp4player_TestNdk#ifdef __cplusplusextern "C" {#endif/* * Class: com_x_mp4player_TestNdk * Method: getStringFromNative * Signature: ()I */JNIEXPORT jint JNICALL Java_com_x_mp4player_TestNdk_getStringFromNative (JNIEnv *, jclass);#ifdef __cplusplus}#endif#endif
编写的.cpp文件代码:
#include <jni.h>#include <com_x_mp4player_TestNdk.h>JNIEXPORT jint JNICALL Java_com_x_mp4player_TestNdk_getStringFromNative (JNIEnv *env, jclass cls){ return 1;}
- 在.cpp文件下要导入生成的头文件 : #include <com_x_mp4player_TestNdk.h>
- .h文件和.cpp文件的名称一致,另外,他们的方法名称也要一致
6.在build.gradle下加入ndk模块
- 模块名称要与本地方法所在的类所导入的链接库文件名字相同,如下
static { System.loadLibrary("MyJni");//导入生成的链接库文件 }
7.编译运行
- 如果出现错误,请试着在jni文件夹下创建一个空的util.c文件 或者自行调试
Android JNI之JAVA调用C/C++层
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。