说三道四 > 文档快照
HTML文档下载 WORD文档下载 PDF文档下载
本文作者:yutiansky
于Android的NDK的概念这里就不解释啦。网上到处都有。
这里讲述一下,编程和调试环境的搭建。
一,软件下载
Android SDK :
http://dl.google.com/android/android-sdk_r08-windows.zip。(2011/02/22可用)
Android NDK :
只能从百度上找 android-ndk-1.5_r1-windows.zip 官方下载地址不知道。
Cygwin :
http://cygwin.com/install.html。(2011/02/22可用)
二,安装
Android NDK :
只要展开就可以啦。
Cygwin :
要选好 gcc, make vi 等基本开发工具。用下列命令查看版本信息,以确认是否正确安装。
gcc -v
make -v
三,用 Cygwin + NDK 编译 NDK 带的例子
1,启动Cygwin控制台。
2,编辑 Home 目录下 .bash_profile 文件,加入下面两行。
NDK=/cygdrive/D/01_Work/01_Android/android-ndk-r5 export NDK
$ cd /cygdrive/d/01_Work/01_Android/android-ndk-r5/samples/hello-jni/TianYu@tianyu-pc /cygdrive/d/01_Work/01_Android/android-ndk-r5/samples/hello-jni$ $NDK/ndk-buildGdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserverGdbsetup : libs/armeabi/gdb.setupInstall : libhello-jni.so => libs/armeabi/libhello-jni.soTianYu@tianyu-pc /cygdrive/d/01_Work/01_Android/android-ndk-r5/samples/hello-jni
package net.dncsoft.android.sample; import android.app.Activity; import android.os.Bundle; public class HelloNDK extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); NDKBoundary ndkBoundary = new NDKBoundary(); int i = ndkBoundary.ndk_add(1, 2); i++; } }
package net.dncsoft.android.sample; public class NDKBoundary { static { System.loadLibrary("HelloNDKImpl"); } public native int ndk_add(int a, int b); }
#include <HelloNDKImpl.h> jint Java_net_dncsoft_android_sample_NDKBoundary_ndk_1add(JNIEnv* env, jobject thiz, jint x, jint y) { return x + y; }
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := HelloNDKImpl LOCAL_CFLAGS := -Werror LOCAL_SRC_FILES := HelloNDKImpl.cpp include $(BUILD_SHARED_LIBRARY)
cd %AndroidRoot%\tools start emulator -avd avdname -partition-size 512 adb remount adb -s emulator-5554 push d:\libHelloNDKImpl.so /system/lib