兩種調用方式
一、使用so庫
1. 在app下創建jni包,再創建一個.c/.cpp文件
#include <jni.h>
jstring
// Java_包名_方法名
Java_com_ikould_testnative_NdkJniUtils_getTestNdkJni(JNIEnv *env, jobject thiz) {
return (*env)->NewStringUTF(env, "I`m Str !");
}
2. jni下創建一個Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := demo
LOCAL_SRC_FILES := demo.c
include $(BUILD_SHARED_LIBRARY)
3. 在Terminal中執行
1) 進入到jni所在目錄
2)執行ndk-build,libs下生成so庫,app下生成object(可刪除)
4. app grade中添加:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
5. 調用Native方法的類添加 System.loadLibrary("demo");如下:```
public class NdkJniUtils {
public native String getTestNdkJni();
static {
System.loadLibrary("demo");
}
}
二、直接使用c++調用
說明:可根據Android Studio創建一個c++的Android項目
注意點:
1. 調用Native方法中一點要把C++引入:```
public native String stringFromJNI();
static {
System.loadLibrary("native-lib");
}
2. app下build.gradle
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
3. app下有CMakeLists.txt文件