一、環境
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類型