关于NDK的配置以及第一个应用程序(android中java语言调用c/c++)

第一步

需要的工具:eclipse sdk ndk,关于如何使用sdk网上教程很多,这里主要介绍ndk.现在最新版本的ndk是10版本,android-ndk-r10d,官网下载最新版本android-ndk-r10d
下载之后的样子是

Android NDK和android api版本对应关系_编辑器


双击安装就可以了,其实就是解压的过程(

注意啊,解压之后的目录跟文件的目录是相同的, 如果解压之后再想移动解压后的文件可就难了,自己有过体会

解压后的目录是

Android NDK和android api版本对应关系_Test_02

第二步

OK,工具准备好了开始安装
1.点击window->Preferences->Android->DNK,然后选择你解压的目录文件,点击确定就可以了

Android NDK和android api版本对应关系_android_03


Android NDK和android api版本对应关系_android_04


Android NDK和android api版本对应关系_配置_05


2.已经配置好了环境是不是很高兴,下面开始自己的第一个测试程序


2.1新建一个安卓应用程序,这里取工程名字为Test

Android NDK和android api版本对应关系_配置_06


2.2在新建的工程上面点击右键->android tools->add native support,.so文件名字随便取,这里就不更改了跟工程名字一样,点击finish

Android NDK和android api版本对应关系_Test_07


Android NDK和android api版本对应关系_android_08


2.3这时候工程里面就会多出来一些文件夹,其中我们本次需要操作的是jni文件夹,这时候里面自动创建Test.cpp和Android.mk文件


2.4其中Test.cpp文件是空的,需要自己来写。OK,


2.5在MainActivity同级目录下新建一个类,名字就叫做MyTest,里面的内容如下:(其中native表示的是本地方法,在java中调用在c++中实现)

package com.example.test;

public class MyTest {
    public static native String getString();
}

2.6MainAvtivity中的代码如下

package com.example.test;

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

public class MainActivity extends Activity {
    static{
        System.loadLibrary("Test");
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String str = MyTest.getString();
        TextView textView = new TextView(this);
        textView.setText(str);
        setContentView(textView);
    }

}

2.7然后就可以在Test.cpp中写c++代码了

#include <jni.h>
#include <string.h>
extern "C"{
    jstring Java_com_example_test_MyTest_getString(JNIEnv* env,jobject thiz)
    {
        return env->NewStringUTF((char*)"firstTest");
    }
}

(注意了,这里采用的是c++(.cpp)写的,一定要加外面的extern”C”,否则在运行时会报异常,提示无法找到getString方法,并且函数名字是 Java_包名_类名_函数名)

2.8可以运行一下看看了

Android NDK和android api版本对应关系_Test_09