Android NDK开发之生成动态库.so文件
配置好NDK开发的基本环境,安装好NDK
在Android studio的工具栏点击SDK Manager的图标,去安装NDK。
接下来就是介绍下如何生成.so文件了,用一个例子来说明。
具体步骤:
1、新建一个Project,例子里是KL,在KL里新建一个Module,如本例中的Demo,新建一个Java文件ZjrT.java,如下图所示:
ZjrT中的static代码块中加载了一个library:zjr,libname的名字可以随意取,这个也就是最后生成的so文件的名字,系统会在前面默认加上lib,如本例中,最后生成的是libzjr.so.
2、生成jni头文件,在这我们可以配置一个宏命令,方便之后使用
File--->Setting--->Tools--->External Tools,点击“+”,弹出Edit Tool,按下图所示进行配置
Tools Setting:
Programme:javah
Arguments:-v -jni -d $ModuleFileDir$/src/main/jni $FileClass$
Working directory:$SourcepathEntry$
在ZjrT.java文件如下操作;
在Module中会自动生成jni文件夹,下面自动生成了一个kl_sensor_ZjrT.h文件。
3、在jni目录下新建.cpp、.mk文件
sou.cpp代码:
#include "jni.h" #include "kl_sensor_ZjrT.h" JNIEXPORT jstring JNICALL Java_kl_sensor_ZjrT_getN (JNIEnv * env, jclass jz){ return env->NewStringUTF("ceshi"); }
Android.mk文件:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := zjr LOCAL_SRC_FILES := sou.cpp include $(BUILD_SHARED_LIBRARY)
Application文件:
APP_ABI := all APP_PLATFORM := android-15
APP_ABI := all 可以用下面替换:
APP_ABI := armeabi armeabi-v7a x86 arm64-v8a mips mips64 x86_64
可选择性生成指令集下的so文件。
4、在Terminal中进入到jni,然后输入ndk-build,按回车Enter,即可
编译完成后,在Module中生成libs文件夹,包含各个指令集下的libzjr.so文件。