运行环境:eclipse
一般创建jni程序需要如下几个步骤:
一、创建JNI目录
在src目录下新建一个Jni的子目录
二、编写native java层方法
在java层编写响应的native方法,代码如下
public static native String getStringFromNative();
三、又分成以下几步
1、生成jni头文件,进入项目目录下,通过javah生成.h文件,如下图所示
产生响应的的.h文件,代码如下
JNIEXPORT jint JNICALL Java_com_lin_myjin_MyJniMethod_getadd
(JNIEnv *, jobject, jint);
2、编写 java Native 代码,新建一个对应的.c文件,实现该方法,代码如下
#include "stdio.h"
#include "com_vince_jnidemo_MainActivity.h"
JNIEXPORT jstring JNICALL Java_com_vince_jnidemo_MainActivity_getStringFromNative
(JNIEnv *env, jclass jclas){
return (*env)->NewStringUTF(env,"hello Jni");
}
3、配置android.mk文件,代码如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := jnidemo
LOCAL_SRC_FILES := com_vince_jnidemo_MainActivity.c
include $(BUILD_SHARED_LIBRARY)
4、进入项目目录下编译,生成.so文件,如下图所示
5、在我们的类中添加如下代码,把生成的响应的.so文件加载到项目中
static {
System.loadLibrary("jnidemo");
}
至此,一个jni小项目完成了。
jniDemo:http://download.csdn.net/detail/u012350993/9425564
Ok,上面主要是介绍了如何在项目中使用jni,下面看下如何在c文件中打印log,其实这些都不要记,只需要知道如何是用就可以,我们可以找到对应ndk文件夹下samples打开里面的native-media,查看里面是怎样打印log的,我们可以直接拿过来用就可以了。
我们发现只需要做一下两点就可以了,
首先,修改mk文件加入,
# for logging
LOCAL_LDLIBS += -llog
其次,在.c文件中加入
#include <android/log.h>
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
至此,我们就可以在我们的代码中使用了,代码如下
LOGV("hello Jni %s","log success");
运行之后,我们可以log中看到对应的信息
其实我们可以再ndk中找到如下路径的文件:E:\java\android-ndk-r9d\platforms\android-14\arch-arm\usr\include\android\log.h其实我们引用的就是这个文件,打开文件之后,我们可以采用不同定义,打印不同的信息。
源代码如下(注:该代码是在上面的基础上添加的):
http://download.csdn.net/detail/u012350993/9425781