JNI調用方法概覽

兩種調用方式
一、使用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文件
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章