搞了三天,终于有点眉目了,共享给大家
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