运行环境:
Android stuido3.5+
一.JNI的初步配置
JNI项目的创建
1.直接创建JNI项目
在android开发中如果是新建项目中需要直接用到JNI,可以通过创建Native C++项目来创建新的项目
2.已有项目集成JNI的Cmake配置
打开app的gradle文件,找到defaultConfig,添加代码块
externalNativeBuild {
cmake {
abiFilters 'armeabi-v7a', 'x86'//添加平台
}
}
在app的代码目录下创建cpp文件夹,并新建一个Cmakelist配置文件,如下图
配置CmakeLists文件:
cmake_minimum_required(VERSION 3.4.1)#Cmake运行的最低版本
add_subdirectory(breakpad)#添加外部目录文件夹
include_directories(breakpad/src breakpad/src/common/android/include)#添加文件目录
#主要作用就是将指定的源文件生成链接文件,然后添加到工程中去
add_library(
crash #库的名字 自定义
SHARED #类型 SHARED,动态库 STATIC,静态库 MODULE,在使用 dyld 的系统有效,如果不支持 dyld,则被当作 SHARED 对待。
crash.cpp #源文件
)
#用于查找包含的头文件
find_library(
log-lib
log)
#作用为将目标文件与库文件进行链接
target_link_libraries(
crash
breakpad
${log-lib})
配置CmakeLists的运行环境,进入Gradle中配置Cmake的运行路径
android {
···
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
version "3.10.2"
}
}
···
}
java中创建native方法
static {
System.loadLibrary("crash");
}
public static native String getString();
cpp文件中方法的静态注册
extern "C" JNIEXPORT jstring JNICALL
Java_类路径_getString(JNIEnv *env, jclass clazz) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
类路径:getString()方法所在的类的路径(例如:com_jni_test)
至此,Android jni的环境初步完成。
如有遗漏,欢迎大佬来指正。