Repolode
facebookincubator

facebookincubator/fbjni

一个简化 C++ 通过 Java Native Interface(JNI)调用 Java 代码的辅助库。

Star
337
Fork
53
未关闭 Issue
17
最近提交
8小时前

这是什么?

fbjni 在原始的 Java Native Interface 之上封装了一层 C++ 辅助类,让原生代码调用 Java 方法、字段和构造函数时需要编写的样板代码更少。库会自动管理 JNI 局部和全局引用的生命周期,并在 Java 与 C++ 之间双向转换异常,开发者无需在每次调用后手动检查异常状态。

类型转换同样由库处理。方法描述符可以从 C++ 函数签名自动推断,std::string 等常见类型可与 Java 类型互相转换。Java 类通过继承 JavaClass 模板的 C++ 结构体来映射,并在其中声明对应的 Java 描述符。

该库最初用于支持 Android 上的跨平台移动端代码,但设计中不依赖任何 Android 特有的内容,可用于任何支持 JNI 的 Java 虚拟机。项目提供了 Android 构建配置、功能速查手册以及使用 JNI 封装库的原因等文档。

核心功能

  • 01自动管理 JNI 局部和全局引用。
  • 02在 Java 异常与 C++ 异常之间双向转换。
  • 03从 C++ 函数签名自动推断方法描述符。
  • 04自动转换 std::string 与 Java 字符串。
  • 05通过 JavaClass 模板将 Java 类映射为 C++ 类型。

适用场景

  • 在 Android 应用中,从共享的 C++ 代码调用 Java API。
  • 在使用 JNI 的任意 JVM 应用中集成原生 C++ 模块。
  • 减少现有 JNI 代码中手动管理引用和检查异常的工作。

快速上手

  1. 1

    阅读 docs/quickref.md 中的快速参考,获取可直接复制的用法示例

  2. 2

    按照 docs/android_setup.md 中的 Android 构建设置指南进行配置

收录于专题

标签

常见问题

fbjni 是什么?
一个简化 C++ 通过 Java Native Interface(JNI)调用 Java 代码的辅助库。 fbjni 在原始的 Java Native Interface 之上封装了一层 C++ 辅助类,让原生代码调用 Java 方法、字段和构造函数时需要编写的样板代码更少。库会自动管理 JNI 局部和全局引用的生命周期,并在 Java 与 C++ 之间双向转换异常,开发者无需在每次调用后手动检查异常状态。
fbjni 可以免费使用吗?用的什么许可证?
fbjni 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
fbjni 还在维护吗?
活跃维护中。fbjni 最近一次提交是在 2026年10月22日。
fbjni 适合用来做什么?
在 Android 应用中,从共享的 C++ 代码调用 Java API。 在使用 JNI 的任意 JVM 应用中集成原生 C++ 模块。 减少现有 JNI 代码中手动管理引用和检查异常的工作。
fbjni 怎么安装和运行?
阅读 docs/quickref.md 中的快速参考,获取可直接复制的用法示例 按照 docs/android_setup.md 中的 Android 构建设置指南进行配置
在哪里获取 fbjni?
源代码和安装说明在 GitHub 上:https://github.com/facebookincubator/fbjni

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目