转载请注明出处:http://blog.youkuaiyun.com/enyusmile/article/details/46581141
一.开发环境搭建
1. 首先,我的硬件/软件环境为:i5 4G,ubuntu 14.04LTS 64位.Eclipse Kepler Service Release 2,JDK 1.7.0.51,android SDK最新至22,build_tools至24.2,介绍完毕(这样的软硬件环境也不是必须需要的).
2.下载NDK开发包,官方地址.下载的是一个.bin文件,进行安装,然后配置环境变量(我是在~/.bashrc里配置的).如下:
export NDK_HOME=/你的安装目录/android-ndk-r10e
export PATH=$NDK_HOME:$PATH
3.验证NDK配置是否成功:
ndk-build -v
如果成功,则显示如下内容:
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
二.HelloJni
说明:在NDK的安装目录下/samples/有很多示例,其中之一就有”hello-jni”这个项目.不过,下文是简化了的这个项目,指在注重动手来体会android NDK的开发流程.
1.新建一个Android项目,项目名称为:HelloJni,将MainActivity更改成HelloJni,同时编写代码,如下:
package com.example.hellojni;
import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;
public class HelloJni extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(stringFromJNI());
setContentView(tv);
}
public native String stringFromJNI();
public native String unimplementedStringFromJNI();
static {
System.loadLibrary("hello-jni");
}
}
2.编写相应的C/C++代码
2.1生成相应的.h文件
在项目的根目录下新建jni文件夹,然后在终端命令行里键入:
abc@ubuntu:~/workspace/android/NDK/hello-jni$javah -classpath /home/android_sdk/platforms/android-21/android.jar:bin/classes -d jni com.example.hellojni.HelloJni
如果操作成功,则项目的jni目录下则出现了com_example_hellojni_HelloJni.h这个文件
2.2编写相应的.c文件
#include <string.h>
#include <jni.h>
jstring
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
jobject thiz )
{
return (*env)->NewStringUTF(env, "Hello from JNI !");
}
3.编译hello-jni.c生成相应的库
3.1编写Android.mk
在jni文件夹目录下,新建一个文件,名称为:Android.mk,编写代码:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)
3.2生成.so共享库文件
在项目根目录下,在终端命令行键入:
abc@ubuntu:~/workspace/android/NDK/hello-jni$ndk-build
如果成功,则,在项目的libs/armeabi/目录下,生成了”libhello-jni.so”文件
4.运行APK
eclipse中刷新下HelloJni工程,ctrl+F11(运行)项目,生成apk,libhello-jni.so共享库会一起打包在apk文件内.在模拟器中看看运行结果:
以上,就完成了本次标题所示的全部内容.
有任何问题,请留言.