一、环境
android studio 3.3.2
gradle 4.6
gradle build 3.2.1(低于会报错)
NDK 19
二、配置CMake
1、项目右键 Link C++ Project with Grade,指定项目中创建的CMakeLists.txt
2、CMakeLists中 source files指定我们创建的 .cpp文件
3、修改library name
三、android studio 配置 javah
Setting --> Tools --> External Tools --> add 配置属性如下
Program: $JDKPath$\bin\javah.exe
Arguments:-classpath $ModuleFileDir$\src\main\java -jni -d $ModuleFileDir$\src\main\jni $FileClass$
Working directory: $ModuleFileDir$\src\main\java
四、应用
1、签名校验,文件加密解密,加固
2、音视频解码,人脸识别
3、libjpeg 图片压缩
五、知识点
1、JNIEnv:Java在本线程的执行环境 作用:1.调用Java 函数 2.操作Java代码
2、反射调用
// 反射调用退出app
jclass jclazz = env->FindClass("java/lang/System");
jmethodID methodId = env->GetStaticMethodID(jclazz, "exit", "(I)V");
env->CallStaticVoidMethod(jclazz, methodId, 0);
()括号内为入参 eg:(ILjava/lang/String;I) 三个入参 int string int 括号外为返回值,V标识void
Ljava/lang/String; 表示string类型