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/11/11 23:00:46 阅读更多 →
别让每个请求都烧大模型:意图识别的「三层漏斗」架构

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

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

2026/11/12 2:30:19 阅读更多 →
古诗词微信小程序源码

古诗词微信小程序源码

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

2026/11/9 22:58:53 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/12 5:00:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/12 5:13:20 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/12 5:13:20 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/11 17:16:37 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/11 17:16:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/12 5:13:20 阅读更多 →

日新闻

周新闻

月新闻