android NDK学习篇5之hello-jni——jni中头文件的自动生成
来源:互联网 发布:斯坦李 知乎 编辑:程序博客网 时间:2024/05/21 07:13
在NDK自带的samples项目中,jni目录下都没有.c/cpp的头文件,而是直接遵循方法命名规则。如hello-jni.c文件,
jstringJava_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz )
直接是Java_java本地方法所在包名(用下划线_取代点.连起来)_方法名(两个固定参数,java传入的其他参数);
其中JNIEnv *env :
就是JNI运行环境,通过它才能与java层交互。JNIEnv指针是JVM创建的,用于Native的c/c++方法操纵Java执行栈中的数据,比如Java Class, Java Method等。
jobject thiz或者jclass class:
就是指当前操作的数据来源的对象,当是静态方法时,则指这个类。
具体参考这个:
http://blog.csdn.net/wantianpei/article/details/7638328
回到主题上来,上面只是表明没有.h文件,只要按照jni命名规则,java调用C方法也是没有问题的。在hello-jni工程中要生产jni头文件,需要用到javah这个工具。先看看它的帮助说明:
用法:javah [选项] <类>其中 [选项] 包括:-help 输出此帮助消息并退出-classpath <路径> 用于装入类的路径-bootclasspath <路径> 用于装入引导类的路径-d <目录> 输出目录-o <文件> 输出文件(只能使用 -d 或 -o 中的一个)-jni 生成 JNI样式的头文件(默认)-version 输出版本信息-verbose 启用详细输出-force 始终写入输出文件使用全限定名称指定 <类>(例如,java.lang.Object)。
javah -classpath ./ -d ../../jni -jni com.example.hellojni.HelloJni
个人习惯直接用:
在项目根目录下,直接执行:
javah -classpath ./bin/classes -d ./jni -jni com.example.hellojni.HelloJni这种风格。
执行后会在项目目录下生产jni文件夹,里面存放着自动生产的.h文件com_example_hellojni_HelloJni.h;
内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_example_hellojni_HelloJni */#ifndef _Included_com_example_hellojni_HelloJni#define _Included_com_example_hellojni_HelloJni#ifdef __cplusplusextern "C" {#endif/* * Class: com_example_hellojni_HelloJni * Method: stringFromJNI * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_example_hellojni_HelloJni_stringFromJNI (JNIEnv *, jobject);/* * Class: com_example_hellojni_HelloJni * Method: unimplementedStringFromJNI * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_example_hellojni_HelloJni_unimplementedStringFromJNI (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif
include此头文件,然后编写C实现代码。
参考资料:
http://book.51cto.com/art/201305/395882.htm
- android NDK学习篇5之hello-jni——jni中头文件的自动生成
- android NDK学习篇5之hello-jni——jni中头文件的自动生成
- Android Eclipse 进阶JNI开发一: NDK自动编译于eclipse自动生成jni头文件
- jni路之生成Android的jni头文件
- android jni javah自动生成头文件
- Android NDK的入门学习Hello JNI
- android NDK学习篇1之hello-jni
- jni自动生成头文件
- jni入门之javah自动生成jni的c文件所需头文件
- AS上NDK自动生成对应java文件的jni头文件
- Android Studio 中生成JNI头文件
- android ndk使用Javah命令生成JNI头文件
- Android NDK开发如何生成JNI头文件
- android中JNI的调用生成头文件步骤
- Android中JNI的调用生成头文件步骤
- Android JNI 头文件的生成
- ANDROID JNI的头文件生成配置
- NDK开发Javah生成Jni 头文件
- 仓库设置
- 面试题 猜颜色球游戏
- Linux下.run文件的安装和卸载
- C++ - 类模板(class template)友元(friend) 的 全部六种形式 及 代码
- CCArray注意事项
- android NDK学习篇5之hello-jni——jni中头文件的自动生成
- php邮箱验证
- M,BB面试+职业求教
- PHPRC问题
- Linux网络编程必看书籍推荐
- 跨平台的检测键盘是否有键按下并返回按键的值
- 驱动中获取PsActiveProcessHead变量地址的五种方法
- 递归的算法
- 机房收费——周日结账单