这篇说静态注册,所谓静态注册,就是native的方法是直接通过方法名的规定格式和Java端的声明处代码对应起来的,其对应规则如下:

JNIEXPORT <返回值> JNICALL Java_<包路径(.换成_)>_<类名>_<方法名>(JNIEnv *, jobject<,方法参数>)

假设在HelloJni中声明了方法staticLoad(), 如下所示:

package com.example.zhanghaiqiang.hellojni;

public class HelloJni {
static{
System.loadLibrary("main");
} public native void staticLoad();
}

则其对应的native方法名为

JNIEXPORT void JNICALL Java_com_example_zhanghaiqiang_hellojni_AndroidJni_dynamicLog
(JNIEnv *, jobject)

当然,这个规则并不需要死记,jdk中的javah自动就帮我们做这个事了,cd到java目录下,执行  javah <包路径>.<类名>  ,就会在当前目录下生成对应的natvie类 的头文件,比如上面的HelloJni,执行javah后得到的com_example_zhanghaiqiang_hellojni_HelloJni.h文件内容就会像这样:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_zhanghaiqiang_hellojni_HelloJni */ #ifndef _Included_com_example_zhanghaiqiang_hellojni_HelloJni
#define _Included_com_example_zhanghaiqiang_hellojni_HelloJni
#ifdef __cplusplus
extern "C" {
#endif /*
* Class: com_example_zhanghaiqiang_hellojni_HelloJni
* Method: staticLog
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_example_zhanghaiqiang_hellojni_HelloJni_staticLog
(JNIEnv *, jobject); #ifdef __cplusplus
}
#endif
#endif

随后,把这个文件拷到预设的jni目录下,copy一份并改名为.c或者.cpp源文件(当然你也可以直接把这个.h文件改成源文件),然后就可以开始写native的方法实现了。

最新文章

  1. hive中导入json格式的数据(hive分区表)
  2. SQL SERVER 2008 字段值合并
  3. javaweb学习总结(二十三)——jsp自定义标签开发入门
  4. IDL中histogram的应用
  5. Django实际站点项目开发经验谈
  6. ■SQL注入自学[第三学:注入点的读写、out_file]
  7. 第四节 数据格式化和ModelAttribute注解的介绍
  8. python之内置类型: 序列, 字典
  9. Heroku使用
  10. (四)左右ng-app自己主动bootstrap相框
  11. Java中httpClient中三种超时设置
  12. Windows Server 2016-批量设置用户下次登陆须更改密码
  13. 一个JavaWeb搭建的开源Blog系统,整合SSM框架
  14. Ubuntu下创建XFS文件系统的LVM
  15. luogu P1077 摆花
  16. PHP函数array_merge
  17. Docker中Spring boot+VueJS+MongoDB的前后端分离哲学摔跤
  18. Appium+python自动化获取toast消息(windows版)的方法
  19. Python之包管理工具:distutils、setuptools、distribute、setup.py、easy_install、easy_install、pip
  20. go递归函数如何传递数组切片slice

热门文章

  1. kubernetes系列(十二) - 存储之Secret
  2. 使用Splunk监控SAP Dump
  3. ant design pro 当中改变ant design 组件的样式和 数据管理
  4. JVM 专题二十:垃圾回收(四)垃圾回收器 (一)
  5. 数据可视化之DAX篇(七) Power BI中用DAX生成的表如何添加索引列?
  6. How to use the function of bind
  7. 网络编程-UDP、TCP
  8. 使用位运算、值交换等方式反转java字符串-共四种方法
  9. CSS文本溢出,显示省略号(...)
  10. CobaltStrike上线Linux主机(CrossC2)