本文是百度各路大神的文章,然后自己亲自实现之后,写下来的
留待后用,若有问题,请指正
1:新建一个项目,包名别带下划线 以免后面.c文件分不清:
2:然后新建一个调用类:
public class HelloJni{
static{
System.loadLibrary("");;//暂时不写加载什么类 后面生成好后再填上去
}
public native String getText();
}
3:项目右键 Android Tolls ----> Add Native Surport...填上想要的SO库名字,生成mk cpp文件
这样就会在项目里面生成一个jni文件夹,可以看到Android.Mk和 xxx.cpp
4:打开CMD窗口,cd到项目的bin文件夹下面的classes,然后点右键运行项目,不需要真实运行,在选择设备的时候取消就是了,运行的目的是生成.class文件
在classes文件夹里面,找到JniSo.class,此时切换到CMD 输入 javah -classpath . -jni com.example.jniget.HelloJni(JniSo的包名加类名)
运行之后如果没报错,就会在classes文件夹下生成一个com_example_jniget_HelloJni.h,将他复制到项目的jni文件夹下
5:编写.cpp文件 打开xxx.cpp文件,输入
#include <string.h>
#include <jni.h>
jstring Java_com_example_jniget_HelloJni_getText(JNIEnv* env, jobject thiz) {
return (*env)->NewStringUTF(env, "--------------\n------------------\n----------\n");
}
这里是.c,所以可能和网上其他文章有差别,因为.cpp是用C++ .c就是用C
6:选中项目,ctrl+B,构建之后,就能在libs文件夹下看到对应生成的SO文件
7:把so文件的名字前面的lib去掉填入上面的load里面,然后就可以在其他地方调用
简单的项目地址:http://download.csdn.net/detail/qq_24179679/9776799