jni开发的流程

第一步:先在java代码中声明一个native的方法

/** * 第一步 * @return */public native String fromC();

第二步

在Eclipse的工程目录下创建一个文件夹 名称jni



第三步: 编写c代码

#include <stdio.h> //引入标准输入输出的头文件#include "jni.h" //如果头文件在编译环境里 直接指定<> 如果文件在当前目录下""//实现java里面未实现的方法/** *JNIEnv* env java虚拟机的环境,指针 *jobject 调用这个c代码的java对象,如果在MainActivity里面调用的方法。obj代表就是MainActivity对象 */
<pre name="code" class="java" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 22px;">//Java_com_example_jnidemo1_MainActivity_fromC
Java是固定格式 后面是包名 再后面是方法jstring Java_com_example_jnidemo1_MainActivity_fromC(JNIEnv* env,jobject obj){//第三步 c代码;char* str = "hello from c !!";//在jni规范里面 在jni环境的结构体里面//jstring (*NewStringUTF)(JNIEnv*, const char*);//转化成了java的字符串return (*(*env)).NewStringUTF(env,str);}

  

第四步:配置Android.mk文件

#指定编译的文件夹  指定当前文件目录LOCAL_PATH := $(call my-dir)#编译器会定义很多的临时变量,中间变量,最好清空所有的中间变量。include $(CLEAR_VARS)#编译出来模块的名称LOCAL_MODULE    := hello# 编译的源代码的名称LOCAL_SRC_FILES := hello.c#编译一个动态库,静态库#静态库 文件名.a   包含所有的函数并且函数运行的依赖,体积大,包含所有的API#动态库 文件名.so  包含函数,不包含函数运行的依赖,体积小,运行的时候,去操作系统寻找需要的APIinclude $(BUILD_SHARED_LIBRARY)

第五步:ndk-build.cmd指令编译c代码


第六步:在java代码里面,把动态链接库加载到jvm虚拟机 static{ System.loadLibrary("库文件名称不带前缀,后缀名"); }

static{System.loadLibrary("hello");}


第七步: 调用这个方法

button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString str = fromC();Toast.makeText(MainActivity.this, str, 1).show();}});}


这个小项目我已经传到github上面了,有需要的可以下载看看

github:https://github.com/zhouwei5200/JNIDemo



更多相关文章

  1. Android(安卓)Studio使用---眼花缭乱的插件使用技巧
  2. Android(安卓)Studio 使用 System.loadLibrary()的一些问题
  3. Android(安卓)代码控制手机数据网络的开关(5.0以上)
  4. 学习:Android生命周期
  5. Android之使用网络技术
  6. Dalvik——基本Dalvik VM调用
  7. android中的数据存储 收藏
  8. android 系统重启关机 方法 非常好的一篇文章
  9. Android实现中文按拼音排序方法

随机推荐

  1. Mysql systemctl start mysqld报错的问题
  2. 你知道哪几种MYSQL的连接查询
  3. MySQL中in和exists区别详解
  4. MySQL 不等于的三种使用及区别
  5. MYSQL 无法识别中文的永久解决方法
  6. MySQL5.7并行复制原理及实现
  7. MySQL删除和插入数据很慢的问题解决
  8. mysql5.7使用binlog 恢复数据的方法
  9. MySQL8.0无法启动3534的解决方法
  10. zabbix监控mysql的实例方法