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++语言。



你可能感兴趣的:(android,android,android,NDK,NDK)