0.使用eclipse正常创建一个android工程
0.1 添加jni函数如下
jni1Activity.java
==================
package com.chase.test.jni1;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class jni1Activity extends Activity {
static {
System.loadLibrary("chasejni1");
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(testPrint("chase jni"));
setContentView(tv);
}
private native String testPrint(String what);
}
0.2 编译得到bin目录,下面出现apk等文件
1.产生jni的.h头文件
1.0 执行命令(命令必须在bin下面classes目录里面执行,否则javah无法解析文件目录路径,就找不到class,无法产生.h文件)
javah com.chase.test.jni1.jni1Activity
或
javah -classpath ../bin/classes myj.cameratest.FilterWrapper
1.1得到com_chase_test_jni1_jni1Activity.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_chase_test_jni1_jni1Activity */
#ifndef _Included_com_chase_test_jni1_jni1Activity
#define _Included_com_chase_test_jni1_jni1Activity
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_chase_test_jni1_jni1Activity
* Method: testPrint
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_chase_test_jni1_jni1Activity_testPrint
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
1.2 将com_chase_test_jni1_jni1Activity.h复制到工程目录(src同级目录)下的jni文件夹里面
#include <jni.h>
#define LOG_TAG "chasejni"
/* Native interface, it will be call in java code */
JNIEXPORT jstring JNICALL Java_com_simon_HelloWorld_printJNI(JNIEnv *env, jobject obj, jstring str)
{
return (*env)->NewStringUTF(env, str);
}
1.4 添加Android.mk
找了一个已经存在的mk文件,修改下面两行就可以
LOCAL_MODULE := chase-jni -->名字可以随便取.但是名字要与System.loadLibrary("chasejni1");一致
LOCAL_SRC_FILES := com_chase_test_jni1_jni1Activity-jni.c -->名字可以随便取.