无需 root 或设备端应用,即可通过 USB 或 TCP/IP 在电脑上投屏并控制 Android 设备。
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
阅读 docs/quickref.md 中的快速参考,获取可直接复制的用法示例
- 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 数据每日更新。
相关项目
一个以单个源文件发布、无外部依赖的 C 语言音频播放与采集库。
基于 OpenGL/ES 的跨平台 C++ 图像与视频滤镜库,提供美颜等实时效果。
基于 OpenGL ES 的跨平台 Java 游戏开发框架,支持桌面、Android、浏览器和 iOS。
Google 开源的 SDK,用一套 Dart 代码构建移动端、Web 和桌面端应用。
使用 React 构建原生 Android、iOS 等应用的框架,界面由原生组件渲染。