读书人

NDK简略实例

发布时间: 2013-02-24 17:58:56 作者: rapoo

NDK简单实例

下面将以前写的一个简单的NDK实例分享一下,希望对刚接触NDK的有一定的帮助!

配置NDK环境:

先下载一个android-ndk-r8b-linux-x86.tar.bz2压缩包,解压开来。

在/etc/profile中的PATH中添加路径:这里是我的路径:$PATH:/home/xxnan/NDK/android-ndk-r8b

保存,重启。

这里就配置好了NDK环境。


接下来我们在ecplice中新建一个工程(我建的是DNKTEST),新建一个包(我的包名ianc.ndk.test),在包下面建一个类(我的类名:NDKTESTActivity)。


我们就是简单的实现一下在Activity中显示调用jni中c文件的一句话。


NDKTESTActivity.java


package ianc.ndk.test;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class NDKTESTActivity extends Activity {
private TextView text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text=(TextView)findViewById(R.id.text);
text.setText(print());
}
public native String print();
static
{
System.loadLibrary("print");
}
}

接下来我们开始了:


先进入/工程名/bin/classes

(如我的:cd workspace/NDKEST/bin/classes)


再输入:javah -classpath . 包名.类名

(如我的:javah -classpath . ianc.ndk.test.NDKTESTActivity)


生成.h文件

(如我的:ianc_ndk_test_NDKTESTActivity.h)


再在工程名下建立jni目录


将生成的.h文件移动到jni目录下并改下名称

(如我将ianc_ndk_test_NDKTESTActivity.h改为hello.h)


再在jni目录下创建android.mk和c文件

android.mk文件:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := print
LOCAL_SRC_FILES := hello.c

include $(BUILD_SHARED_LIBRARY)

hello.c文件:

#include<jni.h>
#include<string.h>
JNIEXPORT jstring JNICALL Java_ianc_ndk_test_NDKTESTActivity_print
(JNIEnv *env, jobject thiz)
{
return (*env)->NewStringUTF(env, "hello welcome from NDK !");
}

最后在进入工程下使用ndk-build命令,在工程目录下输入:ndk-build,就会在工程目录下生成libs文件夹,里面有.os文件


最后就是将工程生成apk运行,就能使java中调用c或c++语言。



读书人网 >移动开发

热点推荐