1、需要准备的工具,eclipse,cdt(c++)插件,cygwin(unix)和 android ndk.
2、开发步骤:
a.创建一个android工程 b.JAVA代码中写声明 native 方法 public native String helloFromJNI(); 通过javah 包名.类名生成jni的方法签名 c. 创建jni目录,编写c代码,方法名字要对应。或者将生成的签名文件拷贝到jni目录,然后在c代码中引入。 d.编写Android.mk文件 e.Ndk编译生成动态库( ndk -build ) f.Java代码load 动态库.调用native代码
创建Android.mk文件,需要将hello-jni替换成自己的c文件模块名称:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.c include $(BUILD_SHARED_LIBRARY)
Android.mk文件增加LOCAL_LDLIBS += -llog
C代码中增加
#include <android/log.h>
#define LOG_TAG "System.out"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
LOGI("info\n");
LOGD("debug\n");
jstringJava_cn_itcast_ndk_DemoActivity_helloFromJNI(JNIEnv *env, jobjectjavaThis) {
return (*env)->NewStringUTF(env, "Hello from native code!");
}
JNIEnv类型代表了java环境 通过JNIEnv* 指针,就可以对java端的代码进行操作.
创建java类的对象,调用java对象的方法
获取java对象的属性 等等.
jobject是个什么
jobjectobj就是当前方法所在的类代表的对象.