第一步:
在安卓工程中建立一个类,在类中通过静态代码块加载SO库中的内容,利用静态方法调取c/c++中的方法。
例子:
static{
System.loadLibrary("对应的SO库名称");
}
public static native 返回类型 方法名;
第二步:
对于调用so库的类,生成对应的头文件
例子:
进入该工程对应的class文件夹下,即工程下/bin/classes/开启控制台
键入如下代码:
javah 包名.对应的类
生成对应的.h文件
取头文件中的方法名放至第三步中的C/C++类中,实现功能
第三步:
编写C/C++实现具体功能
编写Android.mk
#包含Android.mk自身的路径
LOCAL_PATH
:=
$(call my-dir)
#清除LOCAL_XXX变量,除了LOCAL_PATH
include
$(
CLEAR_VARS)
#要生成的动态库名称,系统会自动加上“lib”前缀和“.so”后缀
LOCAL_MODULE
:= jni
#要编译的C/C++文件
LOCAL_SRC_FILES
:= jni.cpp
#指向构建脚本,搜集定义的LOCAL_XXX变量信息,生成lib$(LOCAL_MODULE).so
include
$(
BUILD_SHARED_LIBRARY)
第四步:
在C/C++类所在目录开启控制台,键入ndk-build编译出so文件
第五步:
将so文件放入工程libs下
将C/C++ MK 文件放入工程下建立jni文件夹下
第六步:
编译运行即可