1、下载android-ndk-1.6_r1,解压放在d:/java目录下。(你也可以自己指定其他位置)
2、下载cygwin。
建议先从网上下载到本地,然后再安装。选择从台湾的站点下载,比较近,速度会快一些。
安装的时候,选择以下几个选项的最高版本进行安装。
autoconf2.1
automake1.10
binutils
gcc-core
gcc4-core
gdb
pcre
pcre-devel
3、运行cygwin。
1)、在cygwin/home/你计算机名 文件夹下,找到.bash_profile,打开,在最后加入以下文字。关闭,重启。
ANDROID_NDK_ROOT=/cygdrive/d/java/android-ndk-1.6_r1
export ANDROID_NDK_ROOT
2)、输入 cd $ANDROID_NDK_ROOT,进入根目录下。如果报错则找出问题修改。
3)、输入 build/host-setup.sh。编译安装NDK本地环境。如果报错则找出问题修改。
4)、输入 make APP=hello-jni,如果一切正常会提示编译成功。到这一步就说明你以上步骤都做好了,完成的很棒!
如果是android-ndk-r6,把工程目录放到$ANDROID_NDK_ROOT/sources/下,输入
../../ndk-build,即可编译。
4、新建一个Android工程jni-hello。
具体如何建立android工程,请到百度或者google上搜。
1)、新建一个类:jni_hello.java
package practice.jni_hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class jni_hello extends Activity {
static {
System.loadLibrary("jni-hello");
}
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String msg = sayHello();
TextView tv = new TextView(this);
tv.setText(msg);
setContentView(tv);
}
public String sayHello() {
return displayHelloWorld();
}
private native String displayHelloWorld();
}
2)、在工程jni-hello根目录下,新建一个批处理c.bat。运行生成practice_jni_hello_jni_hello.h文件。
rem 具体JDK_PATH路径你可以根据自己的机器自行修改
set JDK_PATH=D:/java/jdk1.6.0_10
cd bin
%JDK_PATH%/bin/javah -jni practice.jni_hello.jni_hello
pause
4、自己新建一个jni-hello.c文件,放在你的ndk根目录下的apps/jni-hello/project/jni文件夹下。
/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
#include <string.h>
#include <jni.h>
/* This is a trivial JNI example where we use a native method
* to return a new VM String. See the corresponding Java source
* file located at:
*
* apps/samples/hello-jni/project/src/com/example/HelloJni/HelloJni.java
*/
jstring
Java_practice_jni_1hello_jni_1hello_displayHelloWorld( JNIEnv* env,
jobject thiz )
{
return (*env)->NewStringUTF(env, "Hello from JNI !");
}
5、进入cygwin,输入make APP=jni-hello。
这样,在project/libs/armeabi就生成了libjni-hello.so文件。
6、把libs文件夹全部拷贝到android工程目录下去。运行Android工程,你就能看到结果了!