准备的文件

Android NDK环境搭建_android

    在新版本号的ADT上安装NDK环境非常方便。我的ADT版本号是V22.0.5,版本号号在打开ADT载入时会显示出来

Android NDK环境搭建_#include_02

在官网上:​​http://developer.android.com/tools/sdk/ndk/index.html​​下载最新的NDK。NDK版本号在r7以上之后就集成了Cygwin。不须要单独去安装Cygwin

1、Eclipse配置

Android NDK环境搭建_官网_03

SDK配置

Android NDK环境搭建_c++_04

NDK配置,路径就是解压出来的NDK根文件夹

Android NDK环境搭建_java_05

下面就来測试下NDK是否已经成功安装

随便新建一个Androidproject,加入Add Native Support

Android NDK环境搭建_官网_06

Android NDK环境搭建_c++_07

Android NDK环境搭建_android_08

此时新建的project就多了一个jni文件夹

Android NDK环境搭建_官网_09

IDE有可能会报一个错误:

[2014-06-23 17:08:36 - Unable to launch cygpath. Is Cygwin on the path?] java.io.IOException: Cannot run program "cygpath": CreateProcess error=2, ϵͳÕҲ»µ½ָ¶


project右键。选择下面选项

Android NDK环境搭建_c++_10

Android NDK环境搭建_c++_11

环境变量设置NDKROOT,Value就是你解压出来的NDK文件夹

Android NDK环境搭建_#include_12

在这里配置的:${NDKROOT}/ndk-build.com就是下面脚本文件

Android NDK环境搭建_android_13

这时再去Cleanproject就不会报错了

Android NDK环境搭建_#include_14

下面就来编写JNI的C++文件。可是没有代码提示,是因为没有导入头文件的原因

Android NDK环境搭建_官网_15

导入头文件方法,选择“Project Properties”

Android NDK环境搭建_java_16

点击“Add"

Android NDK环境搭建_android_17

Android NDK环境搭建_java_18

此时再按"alt + /"就有代码提示

Android NDK环境搭建_c++_19

接下来就是编写代码

在NDKTest.cpp文件

#include <string.h>
#include <jni.h>

jstring Java_com_dzt_ndktest_MainActivity_stringJNI(JNIEnv* env,
jobject thiz){
return env->NewStringUTF("Hello JNI 我的第一个JNI");
}

Android.mk文件是自己主动生成的,能够不用改动

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := NDKTest
LOCAL_SRC_FILES := NDKTest.cpp

include $(BUILD_SHARED_LIBRARY)

Activity类调用代码

package com.dzt.ndktest;

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

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.tv);
tv.setText(stringJNI());
}

public native String stringJNI();

static {
System.loadLibrary("NDKTest");
}
}

build project

Android NDK环境搭建_官网_20

成功通过

Android NDK环境搭建_官网_21

再执行程序,非常不幸。报错了

Android NDK环境搭建_java_22

假设是c++文件须要加上extern "C",从C语言导出

改动代码例如以下

#include <string.h>
#include <jni.h>

extern "C" {
jstring Java_com_dzt_ndktest_MainActivity_stringFromJNI(JNIEnv* env,
jobject thiz) {

return env->NewStringUTF("Hello JNI");
}
}


成功通过

Android NDK环境搭建_java_23

很多其它的样例能够到下面文件夹获取,这是NDK自带的样例。

Android NDK环境搭建_java_24