闲话不多说,直接入正题:

我的环境:

     操作系统:osx 10.10

     IDE:eclipse luna

     SDK: 19

默认你已经搭建好了SDK开发环境


第一步,下载OSX平台下的ndk工具包:

在我的网盘中比较新的r10版本可下载:http://pan.baidu.com/s/1eQhn9aq


第二步,配置环境变量

在你的用户目录下创建.bash_profile文件加入:

export PATH=${PATH}:/Users/devnn/Documents/android_ndk/android-ndk-r10e
A_NDK_ROOT=/Users/devnn/Documents/android_ndk/android-ndk-r10e
export A_NDK_ROOT
export PATH=${PATH}:/Users/devnn/Documents/android-sdk-macosx/platform-tools
export PATH=${PATH}:/Users/devnn/Documents/android-sdk-macosx/tools
A_SDK_ROOT=/Users/devnn/Documents/android-sdk-macosx
export A_SDK_ROOT

当然注意路径要作相应的修改。


第三步,打开Eclipse配置ndk路径,preference->android->ndk


第四步,创建测试工程NDK_TEST


第五步,右键工程->Android Tools->Add Support Library

然后在你的工程目录下生成了一个目录jni里面有一个cpp文件和mk文件。我们先测试c文件,所以把它的后缀改成c。内容参考如下:

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

jstring Java_com_example_ndk_MainActivity_hello(JNIEnv* env, jobject thiz)
{
    return (*env)->NewStringUTF(env, "Hello ,this is from jni");
}

注意C文件的名字和mk文件中对应的名字要一致。

到这里,这个C文件代码会报错,看下一步。


第六步,右键工程->propertiers->C/C++ Gerneral->Paths and Symbols

在include这个选项下点击add,会弹出一个对话框让你选择头文件路径,选File system,比如我的是

/Users/devnn/Documents/android_ndk/android-ndk-r10e/platforms/android-19/arch-arm/usr/include

这个时候,c文件中的错误会消失。


第七步,编写你的Activity的代码

package com.example.ndk;

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

public class MainActivity extends Activity {
    private TextView tvText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvText=(TextView) findViewById(R.id.text);
        tvText.setText(hello());
    }
    public native String hello();
    static{
        System.loadLibrary("NDK_TEST");
    }
}

我的工程结构如下:

wKioL1ZK8snSMFgdAADNndiybRk055.png

然后,运行你的工程,就会看到结果。