引入JNI的步骤
本demo使用的是Google推荐的CMakeLists.txt方式
运行前,需要自行下载cmake和ndk,可以使用Android studio进行下载,路径为Android Sdk-> Sdk tools
创建jni代码目录
app/src/main/jni
创建CMakeLists.txt
创建在module的目录下,与build.gradle同级
# CMake的编译脚本配置文件
# 1. 标注需要支持的CMake最小版本
cmake_minimum_required(VERSION 3.4.1)
# 2. add_library 定义需要编译的代码库 名称, 类型, 包含的源码
file(GLOB native_srcs "src/main/jni/*.cpp") ## 这个配置是编译jni目录下的所有cpp文件
add_library(
# Sets the name of the library.
FoolTools
# Sets the library as a shared library.
SHARED
${native_srcs}
# src/main/jni/native-lib.cpp src/main/jni/FoolTools.cpp # 多个文件可以用空格隔开
)
# 3. find_library 定义当前代码库需要依赖的系统或者第三方库文件(可以写多个)
find_library(
log_lib # 指定要查找的系统库, 给一个名字
log # 真正要查找的liblog.so或者liblog.a
)
# 4. target_link_libraries设置最终编译的目标代码库
target_link_libraries(
FoolTools # add_library 生成的
${log_lib} # find_library 找到的系统库
)
修改build.gradle
android {
// 添加以下配置:
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
创建native方法
public native String stringFromJNI();
生成jni方法
直接右键java中的native方法,就有智能提示
如果没有提示的话,需要使用javah创建.h文件
本demo已经运行通过。 发现在添加新的jni/C++方法时,有时候编译不通过,需要尝试clean project。 在module下添加jni代码也可以使用相同的方式。