UE4中的 USE_ANDROID_JNI 宏

USE_ANDROID_JNI宏

cpp 复制代码
#ifndef USE_ANDROID_JNI
#define USE_ANDROID_JNI 0
#endif

在引擎代码中看到上面的宏定义,其中USE_ANDROID_JNI表示的是是否使用安卓JNI。这个宏定义在下面这个位置:

cpp 复制代码
G:\St\EngineSource\Engine\Source\Runtime\Core\Public\Android\AndroidPlatform.h:
   86  // some android platform overrides that sub-platforms can disable
   87  #ifndef USE_ANDROID_JNI
   88: 	#define USE_ANDROID_JNI	 1
   89  #endif
   90  #ifndef USE_ANDROID_AUDIO

而上一篇文章介绍了为什么在打包安卓时,会包含这个文件。

JNI

AI的解释是:在安卓开发中,JNI 是 Java Native Interface(Java本地接口)的缩写。

JNI 是一种编程框架,用于在 Java 程序和本地代码(如 C/C++)之间进行交互。它提供了一组标准的接口和机制,使得 Java 程序能够调用本地代码,并且本地代码也能够调用 Java 程序。

使用 JNI,开发者可以在 Java 程序中调用本地代码来执行一些高性能、底层或与特定平台相关的操作。这对于需要与底层系统交互、访问硬件功能或使用现有的本地库的应用程序非常有用。

在安卓开发中,JNI 经常用于以下情况:

  1. 访问本地库:通过 JNI,可以将本地库(如 C/C++ 编写的库)与 Java 代码进行绑定,从而在 Java 程序中调用本地库的功能。

  2. 调用系统 API:JNI 可以用于调用安卓系统提供的底层 API,以实现与系统功能的交互,如访问传感器、摄像头、文件系统等。

  3. 性能优化:JNI 可以用于将一些性能敏感的代码从 Java 转移到本地代码中,以提高执行效率。

使用 JNI 需要编写一些本地代码,并在 Java 代码中进行相应的声明和调用。JNI 提供了一组函数和规范,用于管理 Java 对象和本地数据之间的转换、内存管理、异常处理等。

需要注意的是,JNI 的使用需要一定的熟悉度和谨慎性,因为不正确的使用可能导致内存泄漏、崩溃或其他问题。因此,在使用 JNI 时,建议参考官方文档和最佳实践,并遵循安全和可靠的编程习惯。

相关推荐
2601_9498095928 分钟前
flutter_for_openharmony家庭相册app实战+通知设置实现
android·javascript·flutter
液态不合群1 小时前
【面试题】MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
android·数据库·mysql
雪球Snowball3 小时前
【Android关键流程】资源加载
android
2501_915918413 小时前
常见 iOS 抓包工具的使用,从代理抓包、设备抓包到数据流抓包
android·ios·小程序·https·uni-app·iphone·webview
墨月白4 小时前
[QT]QProcess的相关使用
android·开发语言·qt
enbug5 小时前
编译安卓内核:以坚果R1、魔趣MK100(Android 10)系统为例
android·linux
、BeYourself5 小时前
应用专属文件与应用偏好设置(SharedPreferences)
android
2501_948120155 小时前
基于模糊数学的风险评估模型
android
MengFly_5 小时前
Compose 脚手架 Scaffold 完全指南
android·java·数据库
·云扬·6 小时前
MySQL Binlog三种记录格式详解
android·数据库·mysql