以hello-jni.c为例 环境:NDK : android-ndk-r10
1、建立需要调用c、c++的本地java类
声明需要调用的函数名等
package com.dl.jnitest;
public class NdkJniTest {
public native String stringFromJNI();//c文件里面的函数,在本地声明
static {
System.loadLibrary("hello-jni");//hello-jni 为.c/.cpp的文件
}
}
2、生成调用 头文件,拷贝至jni文件夹
在..... /JniTest/bin/classes 下
终端输入:javah -classpath . com.dl.jnitest.NdkJniTest
将生成头文件 com_dl_jnitest_NdkJniTest.h
3、根据头文件完善c、c++文件函数 hello-jni
在 /jni/ 下建立文件 hello-jni.c文件
4、编写Android.mk文件,对C文件编译,编译工具:NDK会调用C编译器
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := hello-jni.c
LOCAL_C_INCLUDES :=$(JNI_H_INCLUDE)
LOCAL_LDLIBS := -llog #more...
5、编写 Application.mk 指定具体平台 (可选)
APP_ABI := armeabi-v7a
APP_PLATFORM := android-8
6、生成.so共享库文件
JniTest 目录下终端输入: ndk-build
so文件 生成在 /JniTest/libs/armeabi 下
7、java文件调用
8、重新编译Eclipes,即可加载
1、建立需要调用c、c++的本地java类
声明需要调用的函数名等
package com.dl.jnitest;
public class NdkJniTest {
public native String stringFromJNI();//c文件里面的函数,在本地声明
static {
System.loadLibrary("hello-jni");//hello-jni 为.c/.cpp的文件
}
}
2、生成调用 头文件,拷贝至jni文件夹
在..... /JniTest/bin/classes 下
终端输入:javah -classpath . com.dl.jnitest.NdkJniTest
将生成头文件 com_dl_jnitest_NdkJniTest.h
3、根据头文件完善c、c++文件函数 hello-jni
在 /jni/ 下建立文件 hello-jni.c文件
4、编写Android.mk文件,对C文件编译,编译工具:NDK会调用C编译器
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := hello-jni.c
LOCAL_C_INCLUDES :=$(JNI_H_INCLUDE)
LOCAL_LDLIBS := -llog #more...
LOCAL_SHARED_LIBRARIES := liblog libcutils
LOCAL_PRELINK_MODULE := false
include $(BUILD_SHARED_LIBRARY)5、编写 Application.mk 指定具体平台 (可选)
APP_ABI := armeabi-v7a
APP_PLATFORM := android-8
6、生成.so共享库文件
JniTest 目录下终端输入: ndk-build
so文件 生成在 /JniTest/libs/armeabi 下
7、java文件调用
8、重新编译Eclipes,即可加载
附件为完整实例代码
http://download.csdn.net/detail/cooolboyish/8889389