美文网首页
动态注册JNI

动态注册JNI

作者: Moneys | 来源:发表于2017-12-26 16:01 被阅读0次

    动态注册JNI

    使用JNI_OnLoad()动态注册JNI函数。

    Github:https://github.com/630381030/JNIFramework

    添加CPP文件

    添加实现你的c++文件到目录中(例如JNI_Example.cpp)。

    添加CPP映射Java的Native信息

    JNI_NativeMehtods.h中添加你的Java的Native方法对应的信息。

    例如JNI_Example.cpp对应Java包下Example.java的信息

        //这里定义需要注册的Java层的native方法
        //例如我的包 xyz.sziit.test 下有个 Example 类
        //Example类下有两个native的方法 add() 和 sub()
        //Java的native方法对应c++的函数定义在 JNI_Example.h, Example_Add() 和 Example_Sub()
        #define JC_Example  "xyz/sziit/test/Example"
        JNINativeMethod methods_Example[] =
        {
            {"add", "(II)I", (void*) Example_Add},
            {"sub", "(II)I", (void*) Example_Sub}
        };
    

    将映射信息注册到JNI中

    在JNI_Init.cpp文件中的void RegisterClassesMethods(JNIEnv *env);函数注册你的映射信息。

        void RegisterClassesMethods(JNIEnv *env)
        {
            //将Java的native方法注册到JNI,native相关信息定义在 JNI_NativeMethods.h 中
            REGISTERCLASSMETHODS(JC_Example, methods_Example);
        }
    

    完成

    至此已完成,执行ndk-build即可编译。详细编译规则请修改Android.mk文件

    相关文章

      网友评论

          本文标题:动态注册JNI

          本文链接:https://www.haomeiwen.com/subject/hwljgxtx.html