下面将以前写的一个简单的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++语言。