(Linux平台)在Android中调用JNI

(需要使用NDK工具编译生成.so文件,所以请先下载NDK,

附地址: http://wear.techbrood.com/tools/sdk/ndk/index.html ,请选择对应平台下载)


一、编写APP时,使用:

static {

System.loadLibrary("native库名,一般为C/C++文件名");

}


二、声明native方法,如:

public native String getJNIString();


三、编译一次


四、进入APP源码src文件夹,在终端执行指令:

   javah 包名.类名

  (例如 :javah com.example.jnidemo.JNITest)

执行后,src目录下会生成.h结尾的头文件。文件内容已自行生成,主要包含了步骤二中声明的native方法在JNI下的对应函数名,如:

  jstring JNICALL Java_com_liyd_jnidemo_JNITest_getJNIString (JNIEnv *, jobject);

(此方法即我们源文件要实现的方法)


五、在APP项目根目录下创建jni文件夹,在其中创建C/C++源文件、Android.mk,(此外可选建Application.mk)。

1.源文件中实现步骤二中所述函数。

2.Android.mk有5个必须用到的变量:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    :=
模块名 (,模块名是唯一的,比如:jni-demo

    LOCAL_SRC_FILES := 源文件 (可以有多个,使用空格或Tab来分隔,比如:jni-demo.c  jni-test.c)

include $(BUILD_SHARED_LIBRARY)


六、在linux终端中,进入步骤五中创建的jni文件夹路径下,使用native工具编译,生成.so文件。

直接执行指令(ndk-build是一个ndk中一个脚本文件)为:

     $ndk根目录路径/ndk-build

即可自动生成.so等文件。


七、再次编译APP,顺利运行。


【附上我写的一个极简小demo地址: http://download.csdn.net/detail/u013403478/9590098 】


转载请注明出处:http://blog.csdn.net/u013403478/article/details/52068095


你可能感兴趣的:(Android)