使用java语言与c++语言通信

第一步,配置java的环境,jdk和jre,这里就不说了
第二步,配置NDK,具体如下图(作者使用NDK版本为R10e)
配置NDK
将NDK Location设定为自己下载的NDK地址就行
第三步,加入原生支持:右键创建的项目,Android Tools>>Add Native Support
这里写图片描述
这里大家可以自己命名,点击确定之后,再看我们的项目文件,会生成一个jni文件夹,里边有一个HelloJNI.cpp文件和.mk文件,(HelloJNI为作者上一步的命名),打开Android.mk文件,会发现有一个LOCAL_SRC_FILES := HelloJNI.cpp 这就表明我们的HelloJNI的cpp文件加进来了
第四步,接下来我们可以在MainActivity.java的佟目录下建立一个CHello类,
下面是一些简单代码:

public class CHello {
    public native String getStr();
    public static native int getNum();
    //加载本机库
    static{ //静态模块,第一次执行的时候加载
        System.loadLibrary("HelloJNI");
    }
}

当java里没有native关键字的时候,需要在声明后加{}
如:public String getStr(){};

第五步,接下来 我们要用jni方法生成CHello对应的com_example_hellojni_CHello.h文件
ctrl+r ,输入cmd ,打开dos系统,进入项目的包目录
这里写图片描述
接下来 用javah -jni com.example.hellojni.CHello指令生成CHello.java对应的cpp文件 复制进jni文件夹(当然也可以直接生成的时候保存到jni文件夹,这里就不说了)
这里写图片描述
第六步,打开com_example_hellojni_CHello.h 将以下代码复制进HelloJNI.cpp中(cpp文件中记得添加对应的头文件)

JNIEXPORT jstring JNICALL Java_com_example_hellojni_CHello_getStr
  (JNIEnv *, jobject);

JNIEXPORT jint JNICALL Java_com_example_hellojni_CHello_getNum
  (JNIEnv *, jclass);

然后如图修改代码为:
这里写图片描述
第七步,在MainActivity.java文件中定义一个对象,输出

        CHello h=new CHello();
        System.out.println(h.getStr());

这里写图片描述
在LogCat中有这样的输出结果表示通信成功

Demo下载地址:http://download.csdn.net/download/doubleicefire/10050280
或者baidu链接: https://pan.baidu.com/s/1dFAi1Z7 密码: tvbr

猜你喜欢

转载自blog.csdn.net/doubleicefire/article/details/78424431
今日推荐