JNI开发基础系列-JNI方法动态注册
2017-08-17 15:54
507 查看
JNI方法动态注册
java中创建FileUtils.javapackage com.cool.ndktest2; /** * Created by cool on 2017/8/17. */ public class FileUtils { public native void diff(String path,String pattrn,int num); }
c中
// // Created by cool on 2017/8/16. // #include "com_cool_ndktest2_MainActivity.h" #include <string.h> #include <android/log.h> #include "add.h" #include <assert.h> #define TAG "399" #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG,__VA_ARGS__) # define NELEM(x) ((int) (sizeof(x) / sizeof((x)[0]))) JNIEXPORT void JNICALL native_diff (JNIEnv *env, jclass clazz, jstring path, jstring pattern_Path, jint file_num) { LOGE("JNI begin 动态注册的方法 "); } static const JNINativeMethod gMethods[] = { { "diff","(Ljava/lang/String;Ljava/lang/String;I)V",(void*)native_diff } }; static int registerNatives(JNIEnv* engv) { LOGE("registerNatives begin"); jclass clazz; clazz = (*engv) -> FindClass(engv, "com/cool/ndktest2/FileUtils"); if (clazz == NULL) { LOGE("clazz is null"); return JNI_FALSE; } if ((*engv) ->RegisterNatives(engv, clazz, gMethods, NELEM(gMethods)) < 0) { LOGE("RegisterNatives error"); return JNI_FALSE; } return JNI_TRUE; } JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { LOGE("jni_OnLoad begin"); JNIEnv* env = NULL; jint result = -1; if ((*vm)->GetEnv(vm,(void**) &env, JNI_VERSION_1_4) != JNI_OK) { LOGE("ERROR: GetEnv failed\n"); return -1; } assert(env != NULL); registerNatives(env); return JNI_VERSION_1_4; }
相关文章推荐
- Android Studio Jni开发(三)Native方法动态注册
- JNI开发基础系列--链接第三方动态库
- 安卓 jni 开发之 native 方法的动态注册
- Android JNI开发(1)--JavaVM和 JNIEnv 动态注册本地方法
- 安卓实战开发之JNI从小白到伪老白深入了解JNI动态注册native方法及JNI数据使用
- JavaSE JNI 动态注册本地方法(c语言实现native层)
- Android-NDK开发之基础--Android JNI开发高级篇(JNI中的常用方法)
- JavaSE JNI 动态注册本地方法(c语言实现native层)
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- JNI动态注册native方法及JNI数据使用
- android开发--- jni使用RegisterNatives注册本地方法
- iOS开发笔记系列-基础3(多态、动态类型和动态绑定)
- Android Studio NDK 入门教程(8)--JNI动态注册本地方法
- JNI动态注册native方法及JNI数据使用
- android jni 的编写二 (NDK 开发中动态注册Jni)
- android NDK开发 静态/动态注册 jni
- Android-NDK开发之基础--Android JNI开发高级篇(JNI中的常用方法)
- Android-NDK开发之基础--Android JNI开发高级篇(JNI中的常用方法)
- Android-NDK开发之基础--Android JNI开发高级篇(JNI中的常用方法)
- JavaSE JNI 动态注册本地方法(c语言实现native层)