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就是当前方法所在的类代表的对象.
Android学习笔记_JNI hello world,布布扣,bubuko.com
时间: 2024-11-19 23:34:29