NDK开发笔记(一)

来源:互联网 发布:儿童认字软件 编辑:程序博客网 时间:2024/05/20 01:47

今天,看了无数的前辈分享,受益匪浅,今天我开始学习NDK开发,将此为章作为我学习ndk第一篇博客,也是我在csdn的第一篇博客,以分享为后来之人。

我使用的开发环境的:window7 eclipse集成ndk,ndk的环境配置就不详说了,本博客目标是实现本地调用add(int a, int b)

新建一个安卓工程,右键工程->Android tools->add native method


import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);TextView textView = new TextView(this);int a = 5, b = 6;textView.setText(a + "+" + b + "=" + add(a, b));setContentView(textView);}static{System.loadLibrary("NdkDemo");//引用本地库}private static native int add(int a, int b);//本地方法}
分享一种快捷创建c/C++头文件的方法
run->external tools - > external tool configution,双击program,接下来如图:
<img src="http://img.blog.csdn.net/20160319204443914?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="http://img.blog.csdn.net/20160319204457617?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="http://img.blog.csdn.net/20160319204507679?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
配置完成后,记得apply
然后先中nativa方法所在类,然后选中如下图所示<img src="http://img.blog.csdn.net/20160319204514836?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
</pre><pre name="code" class="java">

即在jni目录下,生成一个h文件

最后编写C++文件,记得导入h头文件

C++方法里面,比java里面多了前面两个参数。实现方法如下:

#include <jni.h>#include <com_example_ndkdemo_MainActivity.h> JNIEXPORT jint JNICALL Java_com_example_ndkdemo_MainActivity_add  (JNIEnv * env, jobject obj, jint a, jint b){return a+b;}
然后编译,运行即可,有问题可咨询留言,当知无不言,初次写博客,写得不好,还望见谅。

0 0
原创粉丝点击