JNI详细教程

搞了三天,终于有点眉目了,共享给大家

android调用c++代码

至于ndk环境这里不讲了(http://blog.csdn.net/yinzhengbo/article/details/7268207


先简述一下实现的功能,增加学生,修改学生信息,查询所有学生信息,根据名字查找学生


1、首先在项目里新建Student实体类包含字段(name,sex,age),

       调用Jni方法的类StudentToJNI包含方法(addStu(Student stu),upStu(Student stu),getStu(String name),getStus)


2、cmd -> javac(编译StudentToJNI.java文件) 生成字节码文件


3、生成头文件(javah)  cd至项目classess目录下 执行  javah -jni  包名+类名(类名不要后缀),会在classes生成一个.h的文件


4、项目根目录下新建jni文件夹,复制 .h文件至jni文件夹下,然后找到ndk的安装目录找到android.mk,Application.mk文件夹一同放在jni目录下,注意如果使用c++里的库需要在Application.mk文件中加入(APP_STL:= stlport_shared)

至于两个文件内容其它的用法,这里就不在描述(goolgle)


5、jni文件夹下新建.cpp文件,最好名称与头文件一致,然后拷贝头文件里的所有函数至cpp文件夹内,并且导入头文件(#include<name.h>),当然也要导入jni.h头文件,其实我们主要做的是就是通过jni把java传进来的类型,转换成c++需要的类型,然后把c++返回的值通过jni转换成java所需要的类型。jni.h头文件里提供了很多转换的方法以及取值的方法,具体大家可以打开ndk安装目录(platforms\android-9\arch-arm\usr\include)目录下查看jni.h头文件


6、具体实现(文件:android.mk,Application.mk,jniTest.h,jniTest.cpp):

        主要是实现jniTest.cpp文件

        (1)、引用必要的头文件(jni.h,jniTest.h,vector),引入命名空间(using namespace std;)


        (2)、定义一个结构&#x

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值