运行环境: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