菜单

开发与工具

相关源文件

本文档概述了 React Native 代码库中使用的开发基础设施、构建流程和工具链。它解释了持续集成和发布管道如何工作,Hermes 如何集成和构建,并概述了测试基础设施。有关平台特定的实现细节,请参阅 Android 实现iOS 实现。有关代码生成的信息,请参阅 代码生成

持续集成管道

React Native 使用 GitHub Actions 进行持续集成,跨多个平台、架构和 JavaScript 引擎运行测试和验证更改。

CI 工作流概述

来源

CI 测试矩阵

React Native 在多个维度上进行 CI 测试以确保兼容性

维度选项
平台Android, iOS
架构新架构,旧架构
JavaScript 引擎Hermes, JavaScriptCore (JSC)
构建类型Debug, Release
框架类型静态库, 动态框架 (iOS)
Node.js 版本18, 20, 22

来源

构建系统

React Native 为其代码库的各个部分采用了不同的构建系统

来源

Android 的 Gradle

React Native 使用 Gradle 来构建 Android 组件。构建过程包括:

  1. 设置 React Native 版本
  2. 将 Android 工件构建并发布到 Maven 本地仓库
  3. 构建 RNTester 进行测试
  4. 管理架构选择 (arm64-v8a, x86, 等)

构建系统利用 Gradle 配置缓存来提高构建性能。

来源

iOS 的 CocoaPods

对于 iOS,React Native 使用 CocoaPods 来管理依赖项。该系统处理:

  1. 集成 Hermes JavaScript 引擎
  2. 框架集成(静态库或动态框架)
  3. 架构选择(新架构或旧架构)
  4. 管理 React-Core、FBReactNativeSpec 等 iOS 平台依赖项

来源

Hermes JavaScript 引擎集成

Hermes 是 React Native 的默认 JavaScript 引擎,作为构建流程的一部分进行构建和集成。

Hermes 构建过程

来源

特定架构的构建

Hermes 为多个平台和架构构建

平台目标架构构建系统
iOSarm64, x86_64 (模拟器)CMake + Xcode
Androidarm64-v8a, armeabi-v7a, x86, x86_64CMake + Gradle
macOSarm64, x86_64CMake + Xcode
Windowsx86_64CMake + Visual Studio
Linuxx86_64CMake

构建过程首先为主机平台编译 HermesC 编译器,然后使用该编译器编译目标平台的 Hermes 字节码。

来源

测试基础设施

React Native 采用跨所有平台的全面测试方法

JavaScript 测试

JavaScript 测试使用 Jest 和 Node.js 在多个版本(18、20 和 22)上运行。

来源

iOS 测试

iOS 测试包括:

  1. 核心组件的单元和集成测试
  2. RNTester 应用的 E2E 测试
  3. HelloWorld 模板应用测试
  4. 跨两种架构(旧和新)进行测试
  5. 使用两种 JavaScript 引擎(Hermes 和 JSC)进行测试
  6. 使用不同的依赖策略(静态库和动态框架)进行测试

来源

Android 测试

Android 测试包括:

  1. RNTester 应用的 E2E 测试
  2. HelloWorld 模板应用测试
  3. 跨两种架构(旧和新)进行测试
  4. 使用两种 JavaScript 引擎(Hermes 和 JSC)进行测试
  5. 测试不同的构建变体(Debug 和 Release)

来源

使用 Maestro 进行 E2E 测试

React Native 在 iOS 和 Android 平台上均使用 Maestro 进行 E2E 测试。这些测试用于验证 RNTester 应用和模板应用中的核心功能。

来源

发布流程

React Native 通过一个结构化的流程管理多个发布渠道

来源

发布类型

React Native 有几种发布类型

  1. 每夜构建:从 main 分支自动生成
  2. 候选版本 (RC):标记为 v0.X.Y-rc.Z,用于预发布测试
  3. 稳定版本:标记为 v0.X.Y,用于生产环境

发布流程包括构建所有平台工件、发布到 npm 和 Maven Central,以及创建一个包含生成变更日志的 GitHub 发布。

来源

开发环境

本地开发要求

对于本地 React Native 开发,需要以下工具

平台所需工具
所有Node.js, yarn, Git
AndroidAndroid Studio, JDK, Gradle
iOSXcode, CocoaPods, Ruby
WindowsVisual Studio, CMake

来源

开发中间件

React Native 包含用于本地开发的开发中间件,包括

  1. 用于 JavaScript 打包的 Metro bundler
  2. React DevTools 集成
  3. 热重载功能

开发服务器通过提供对代码更改的实时反馈,从而能够加快开发过程中的迭代速度。

来源

  • 基于代码库结构中的 packages/dev-middleware 引用

JavaScript 源文件加载

React Native 使用内存映射方法加载 JavaScript 包,以实现对大型 JavaScript 文件的高效加载。

来源

代码库结构

React Native 代码库被组织成一个包含多个包的单体仓库

来源

这种组织方式使得可以在保持整体集成的同时,专注于特定组件的开发和测试。