React Native Module 注册流程
React Native 的Native Module 注册流程指的是 JavaScript 层如何调用 Android/iOS 原生代码Java/Kotlin/Obj-C/Swift的过程。整体流程JavaScript | | NativeModules.xxx ↓ React Native Bridge | ↓ Module Registry | ↓ Native Module Provider | ↓ Java/Kotlin/Obj-C Module实例 | ↓ 执行原生方法一、Android Native Module 注册流程以 Android 为例1. 创建 Native Module例如public class MyModule extends ReactContextBaseJavaModule { public MyModule(ReactApplicationContext context) { super(context); } Override public String getName() { return MyModule; } ReactMethod public void hello(String name) { Log.d(RN, Hello name); } }关键getName()决定 JS 调用名字NativeModules.MyModule2. 创建 Module PackageRN 通过 Package 管理 Native Module。public class MyPackage implements ReactPackage { Override public ListNativeModule createNativeModules( ReactApplicationContext context ) { ListNativeModule modules new ArrayList(); modules.add( new MyModule(context) ); return modules; } Override public ListViewManager createViewManagers( ReactApplicationContext context ) { return Collections.emptyList(); } }这里完成Package | └── MyModule实例3. 注册 Package加入MainApplication.java里面Override protected ListReactPackage getPackages() { ListReactPackage packages new PackageList(this) .getPackages(); packages.add( new MyPackage() ); return packages; }流程MainApplication | | ↓ ReactNativeHost | ↓ Package列表4. React Native 初始化时加载App启动ReactInstanceManager | | ↓ createReactContext() | ↓ NativeModuleRegistryBuilder | ↓ 遍历 ReactPackage | ↓ createNativeModules() | ↓ 注册 Module最终形成NativeModuleRegistry { MyModule : MyModule实例 }5. JS调用JS:import { NativeModules } from react-native; NativeModules.MyModule.hello( Tom );调用链JS | | Bridge | | NativeModuleRegistry | | MyModule.hello()二、iOS Native Module 注册流程类似。1. 创建 ModuleObjective-Cinterface MyModule : NSObject RCTBridgeModule end implementation MyModule RCT_EXPORT_MODULE(); RCT_EXPORT_METHOD( hello:(NSString *)name ) { NSLog(Hello %, name); } end关键RCT_EXPORT_MODULE()自动注册。2. Bridge扫描启动RCTBridge | | ↓ Load Native Modules | | ↓ 扫描 RCT_EXPORT_MODULE | | ↓ 生成 Module Registry三、新架构New ArchitectureReact Native 0.68 引入JSI Fabric TurboModule Codegen流程变化旧架构JS | Bridge(JSON) | Native Module新架构JS | JSI | TurboModule | C Binding | NativeTurboModule注册流程例如JS定义interface Spec extends TurboModule { hello(name:string):void; }Codegen生成NativeMyModuleSpec.java NativeMyModuleSpec.h然后TurboModuleManager | | ↓ Module Provider | ↓ MyModule实例四、完整生命周期总结App启动 | | 初始化 ReactContext | | 加载 ReactPackage | | createNativeModules() | | 生成 NativeModuleRegistry | | Bridge/TurboModule 注册 | | JS NativeModules访问 | | 调用 Native 方法 | | 返回结果五、关键类关系AndroidReactApplication | ↓ ReactNativeHost | ↓ ReactInstanceManager | ↓ ReactContext | ↓ NativeModuleRegistry | ↓ NativeModule六、开发中常见问题JS 找不到 Module错误Native module cannot be null检查getName()是否一致return MyModule;JS:NativeModules.MyModulePackage 是否加入packages.add(new MyPackage());是否重新编译 Androidnpx react-native run-android方法没暴露必须ReactMethod public void test() { }否则 JS 看不到。简单理解React Native Module 注册 Native代码创建 Module → Package 提供 Module → Host 注册 Package → ReactContext启动时生成 Registry → JS通过Bridge/JSI找到并调用。如果你是在做React Native 底层源码分析重点应该看ReactInstanceManager → NativeModuleRegistryBuilder → ReactPackage → NativeModuleRegistry这一条链。

相关新闻

小牛电动车电池无输出故障排查:从BMS原理到维修实战

小牛电动车电池无输出故障排查:从BMS原理到维修实战

1. 问题引入:当你的小牛“趴窝”时,先别急着送修如果你是一位小牛电动自行车的车主,某天早上准备出门,拧开钥匙,仪表盘正常亮起,但一拧转把,车子纹丝不动,或者干脆连仪表盘都点不亮&…

2026/7/31 3:03:29 阅读更多 →
别让每个请求都烧大模型:意图识别的「三层漏斗」架构

别让每个请求都烧大模型:意图识别的「三层漏斗」架构

用最便宜的方式处理最多的请求,只把最难的交給大模型——工程级意图识别三层漏斗架构的完整拆解,含可运行代码实现。你的 Agent 每次对话都要调一次 GPT-4,哪怕用户只是问「今天周几」。 一次 GPT-4 调用 ≈ 0.05 美元。一天 10 万次 5,000 …

2026/7/31 3:02:29 阅读更多 →
古诗词微信小程序源码

古诗词微信小程序源码

公众号回复:【古诗词小程序源码】即可获取,如下:使用方式 使用微信开发工具导入该项目,并更换自己的APPID。创建免费的古诗词接口API KEY,地址:https://qyunge.cn/user/profile。把创建的API KEY写入到 min…

2026/7/31 3:02:29 阅读更多 →

最新新闻

GD32开发环境搭建:基于Eclipse与GNU工具链的完整指南

GD32开发环境搭建:基于Eclipse与GNU工具链的完整指南

1. 项目概述:为什么选择GD32与Eclipse的组合?最近几年,国产MCU的势头越来越猛,其中兆易创新的GD32系列凭借其出色的性价比和与STM32的高度兼容性,成为了很多工程师和电子爱好者的新宠。无论是做产品原型、参加竞赛&…

2026/7/31 3:32:41 阅读更多 →
3个核心功能解锁:Uncle小说如何解决您的数字阅读难题

3个核心功能解锁:Uncle小说如何解决您的数字阅读难题

3个核心功能解锁:Uncle小说如何解决您的数字阅读难题 【免费下载链接】uncle-novel 📖 Uncle小说,PC版,一个全网小说下载器及阅读器,目录解析与书源结合,支持有声小说与文本小说,可下载mobi、ep…

2026/7/31 3:32:41 阅读更多 →
PCIe链路训练核心:TS1/TS2序列原理与实战调试指南

PCIe链路训练核心:TS1/TS2序列原理与实战调试指南

1. 从一次“神秘”的硬件故障说起:为什么需要链路训练?最近在调试一块基于FPGA的PCIe数据采集卡时,遇到了一个让人头疼的问题。系统启动后,设备管理器里时有时无地出现一个带黄色感叹号的“PCIe设备”,错误代码是“Uns…

2026/7/31 3:32:41 阅读更多 →
Fluent浮点异常(FPE)诊断与解决:从原理到工程实践

Fluent浮点异常(FPE)诊断与解决:从原理到工程实践

1. 问题引入:一个让Fluent计算瞬间崩溃的“幽灵”如果你用过ANSYS Fluent做流体仿真,大概率遇到过这个场景:计算跑得好好的,迭代了几百步甚至几千步,突然弹出一个错误窗口,提示“Fluent received a fatal s…

2026/7/31 3:32:41 阅读更多 →
SAP CO模块从入门到精通:成本控制与实操指南

SAP CO模块从入门到精通:成本控制与实操指南

在实际企业资源计划(ERP)系统实施和运维中,SAP 的 CO(Controlling,成本控制)模块是财务管理的核心,它直接关系到企业成本核算的准确性和管理决策的有效性。很多财务和 IT 人员在初次接触 SAP CO…

2026/7/31 3:32:41 阅读更多 →
第10章 中间件的使用

第10章 中间件的使用

第10章 中间件的使用10.1 Python 同步与异步你是否遇到过这样的场景:用 Python 写了一个下载图片的脚本,它却要一张下载完才能开始下一张,效率低得让人着急;或者写了个简单的 Web 服务,一个慢请求就能卡住后面所有用户…

2026/7/31 3:31:41 阅读更多 →

日新闻

物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:34 阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:34 阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:34 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻