android jni demo

一、java類

public class FaceRebuildNative {

    static {
        System.loadLibrary("face_jni");
        System.loadLibrary("faceRecon");
    }

    public native String stringFromJNI();

}

二、cmakelist內容

cmake_minimum_required(VERSION 3.4.1)

include_directories(src/main/cpp/include)

add_library( # Sets the name of the library.
             face_jni
             SHARED
        src/main/cpp/face_jni.cpp)

add_library( faceRecon SHARED IMPORTED)
set_target_properties( faceRecon
                       PROPERTIES IMPORTED_LOCATION
                       ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libfaceRecon.so)

target_link_libraries( # Specifies the target library.
                       face_jni
                       faceRecon
                       # Links the target library to the log library
                       # included in the NDK.
                      log )

三、cpp類,face_jni.cpp

#include <jni.h>
#include <string>
#include <android/log.h>


#define REGISTER_CLASS "com/howard/facerebuild/FaceRebuildNative"


jstring stringFromJNIT(JNIEnv *env, jclass){
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
JNINativeMethod jniMethods[] = {
        { "stringFromJNI",  "()Ljava/lang/String;",      (void*)&stringFromJNIT},
};
JNIEXPORT
jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved){
    JNIEnv *env;

    if (vm->GetEnv(reinterpret_cast<void **>(&env), JNI_VERSION_1_6) != JNI_OK) {
        return -1;
    }

    jclass clz = env->FindClass(REGISTER_CLASS);
    env->RegisterNatives(clz, jniMethods, sizeof(jniMethods) / sizeof(JNINativeMethod));
    env->DeleteLocalRef(clz);
    return JNI_VERSION_1_6;

}
JNIEXPORT
void JNICALL  JNI_OnUnload(JavaVM* vm, void* reserved){

    return ;
}

 

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