1.在官方网站下载Linux的NDK版本android-ndk-1.6_r1。
2.在windows平台VM虚拟机上安装ubuntu(主要是为了编译本地库文件供java中的jni调用)。
3.在ubuntu中用终端进入到android-ndk-1.6_r1目录下运行:./build/host-setup.sh
可能会出现这种错误:ERROR: Could not find a valid Nawk or Gawk executable.
Please ensure that either one of them is installed.
Use the --no-awk-check option to ignore this message.
这是因为ubuntu /bin//sh链接到了dash,而dash全称为Debian ALmquist shell,它比bash小得多,速度快,但功能有所缩减。现在大部分脚本都是bash脚本,所以较好的解决方案是:
sudo rm /bin/sh
sudo ln -s bash/bin/sh
运行成功后会出现:
Host setup complete.Please read docs/OVERVIEW.TXT if you don't know what to do.
4.在windows版的eclipse上创建一个android工程NDKO,代码如下:
package com.demo.NDKO;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class NDKO extends Activity {
/** Called when the activity is first created. */
static{
System.loadLibrary("NDKO");
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv=new TextView(this);
tv.setText("wenTao:"+getString());
setContentView(tv);
}
private native String getString();
}
5.在该工程中的/bin/com/demo/NDKO/目录下找到NDKO.class文件将其放到/bin下并在windows中运行cmd命令,进入到该bin目录下运行:javah –jni com.demo.NDKO.NDKO命令,这时生成.h的头文件,将该文件改名为:NDKO.h
6.在工程的根目录下建立一个文件夹jni,该文件夹与src,bin,gen等同一级。将刚才生成的NDKO.h放到jni文件夹下,同时在该jni文件夹下再编写一个C语言程序:NDKO.c,代码为:
#include
#include
#include
#include"NDKO.h"
#include
#defineLOG_TAG"NDKO"
#defineLOGI(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
staticchars_string[] ="My god, I did it!";
jstring
Java_com_demo_NDKO_NDKO_getString( JNIEnv* env,
jobject thiz )
{
LOGI("MyJNI write is called!");
return(*env)->NewStringUTF(env,"My name is Xu Wentao");
}
7.将该工程从eclipse中拷贝出来,并将其放入ubuntu中的android-ndk-1.6_r1下的apps目录下,注意:在这里我们一定要在工程目录下建立一个apps文件夹,并将工程里面的所有文件拷贝到apps文件里,否则当我们运行终端进入到android-ndk-1.6_r1目录下输入:make APP=NDKO时会出现找不到jni文件这个异常。
8.在jni文件夹下存放了NDKO.c和NDKO.h下我们需要再创建一个Android.mk。这时我们可以到apps目录下的hello-jni文件夹下找到这个文件将其拷贝到NDKO/project/jni/目录下并在其中进行修改:
LOCAL_MODULE:= NDKO
LOCAL_SRC_FILES:= NDKO.c
9.回到上级目录NDKO下,创建一个文件Application.mk,该文件与project文件同级。同样我们可以采用上述方法从hello-jni里面进行拷贝Application.mk并在其中进行修改:
APP_MODULES:= NDKO(注意值要与Android.mk中的Local_MODULE一致)
10.将根目录的defalut.properties放到回收站中,因为当我们最终编译的时候会报不适合该android平台的错误。
11.最后我们通过终端进入到android-ndk-1.6_r1目录下执行make APP=NDKO命令,当我们看到:
Install:libNewJNI.so => apps/NDKO/project/libs/armeabi
就表示生成库文件成功。此时,我们再将回收站中的defalut.properties恢复并将该工程放到windows平台下的eclipse中就能运行成功了。