博客
关于我
UE4接入Android第三方库2——通过JIN与GameActivity通信
阅读量:591 次
发布时间:2019-03-12

本文共 1371 字,大约阅读时间需要 4 分钟。

在C++中编写Native方法

如果你需要在C++中编写Native方法以调用Android应用程序中的函数,这是一个非常常见的任务,特别是在使用JNI(Java Native Interface)进行交叉开发时。在C++中编写JNI方法可以允许你直接调用Android应用的Java方法,这对于优化性能或者与特定Android功能进行交互非常有用。

首先,让我们了解一下编写JNI方法的基本步骤。

  • 包含必要的头文件:
  • 在编写JNI代码之前,需要包含以下头文件:

    #include "Android/AndroidApplication.h"#include "Android/AndroidJNI.h"
    1. 编写JNI方法:
    2. 编写JNI方法的基本格式如下:

      extern "C"JNIEXPORT void JNICALLJava_com_epicgames_ue4_GameActivity_onNativeThreadStart(JNIEnv *env, jobject instance) {    // 在这里执行一些操作}

      需要注意的是,不能手动输入 JNIEnv *env 和 jobject instance。Android Studio会自动处理这些内容,因此建议在Android Studio中创建项目以避免错误。

      1. 调用已有方法:
      2. 要在C++中调用Android应用中的方法,下面是具体的步骤:

      3. 获取JNIEnv指针:
      4. JNIEnv* Env = FAndroidApplication::GetJavaEnv();

        1. 获取方法ID:
        2. jmethodID id_getMainControllerOrientation = FJavaWrapper::FindMethod(    Env,    FJavaWrapper::GameActivityClassID,    "getMainControllerOrientation",    "[F",    false);
          1. 调用方法:
          2. jfloatArray jfArray = FJavaWrapper::CallObjectMethod(    Env,    FJavaWrapper::GameActivityThis,    id_getMainControllerOrientation);

            需要注意的是,FJavaWrapper是一个提供便捷方法的助手类,用于更方便地处理Android JNI操作。

            注意事项:

            • 非常重视error checking,可以添加调试日志以跟踪异常和错误信息。
            • 确保方法调用获得正确的return type和参数类型匹配。
            • 在使用Android JNI编程时,熟悉Java虚拟机的内存管理机制也是非常重要的。

            在编写和修复JNI代码时,使用Android Studio的native support功能是一个明智的选择,这些工具能帮助你在项目中轻松添加和管理C++代码。记住,一定要遵守Android应用包命名规则,并确保所有JNI方法都是针对特定版本的Androidystem进行编写。

            如果你在编写过程中遇到了问题,可以参考官方文档和开发者社区获取更多帮助。通过不断的实践和学习,你会越来越熟悉JNI编程,而不仅仅是它的表面。

    转载地址:http://ombxz.baihongyu.com/

    你可能感兴趣的文章
    np.bincount(x)的简单解释
    查看>>
    LeetCode Top-100 T22-括号生成
    查看>>
    vscode设置eslint保存文件时自动修复eslint错误
    查看>>
    JAVA 多线程
    查看>>
    Java的 arraylist类【具体案例】
    查看>>
    牛客-链表中环的入口节点(Java)
    查看>>
    解决微信小程序中 calc 失效问题
    查看>>
    堆的应用_topK算法和堆排序
    查看>>
    最大半连通子图
    查看>>
    Remove Extra one 维护前缀最大最小值
    查看>>
    跳台阶
    查看>>
    另类加法,走方格的方案数,最近公共祖先
    查看>>
    [Java Path Finder][JPF学习笔记][7]JPF输出详细程度设置
    查看>>
    GitHub完整记录数据库GHTorrent的下载和安装经验
    查看>>
    设计模式—— 三:依赖倒置原则
    查看>>
    SpringBoot打包之后乱码
    查看>>
    因SGA分配错误无法启动数据库
    查看>>
    Oracle修改字段类型方法总结
    查看>>
    ORA-00020 超过当前最大连接数
    查看>>
    合理控制oracle数据库具有DBA权限的用户
    查看>>