导航

[原]android开发环境搭建-ndk

Posted on 2010-10-22 11:17  maconel  阅读(595)  评论(0编辑  收藏  举报

一.NDK是什么

NDK是一个工具集,可以编译出android下的原生程序。它包括一套编译工具,下面的库和头文件,文档,示例。

libc (C library) headers
libm (math library) headers
JNI interface headers
libz (Zlib compression) headers
liblog (Android logging) header
OpenGL ES 1.1 and OpenGL ES 2.0 (3D graphics libraries) headers
libjnigraphics (Pixel buffer access) header (for Android 2.2 and above).
A Minimal set of headers for C++ support

 

二.NDK适合做什么
NDK适合独立的大运算量的操作,如信号处理,物理仿真等。

 

三.安装(windows系统下)

1.安装NDK,需要先安装SDK,请参考《android开发环境搭建-sdk》。
3.解压。
4.NDK已经安装完了,但为了能编译,还需要安装cygwin。在这里下载http://www.cygwin.com/cygwin的壳。可恶,又是壳。
5.安装cygwin,注意要选上binutils, gcc, gcc-mingw, gdb, make等编译工具。然后就是漫长的下载过程。
6.完成。

 

四.例子
1.在SDK中新建一个工程,请参考《android开发环境搭建-sdk》。
2.创建目录<project>/jni。
3.在<project>/jni下创建文件sample.c,写入以下内容:
#include <string.h>
#include <jni.h>

JNIEXPORT jint JNICALL
Java_com_demo_t0_act_add(JNIEnv* env, jobject thiz, jint x, jint y)
{
    return x + y;
}

注意,com_demo_t0是你的project的包名,act是Activity名。这个add函数传入2个int型变量,返回它们的和。
4.在<project>/jni下创建文件Android.mk,写入以下内容:
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := sample
LOCAL_SRC_FILES := sample.c

include $(BUILD_SHARED_LIBRARY)

5.进入cygwin,按以下方式编译:
$ cd <project>
$ <ndk>/ndk-build
现在<project>/libs/armeabi下会生成libsample.so。
6.在SDK中这样调用:
public class act extends Activity {
    public native int plus(int x, int y);

    public void callJni() {
        int x = plus(1, 2);
    }

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