跳到主内容

如何从源代码构建

如果你想开发新功能/修复错误,尝试尚未发布的最新功能,或者维护你自己的带有无法合并到核心的补丁的分支,你需要从源代码构建 React Native。

安卓

先决条件

要从源代码构建,你需要安装 Android SDK。如果你遵循了设置开发环境指南,你应该已经设置好了。

无需安装 NDK 或 CMake 的特定版本等其他工具,因为 Android SDK 将自动下载从源代码构建所需的一切。

将你的项目指向每夜构建版本

要使用 React Native 的最新修复和功能,你可以通过以下方式将你的项目更新为使用 React Native 的每夜构建版本

yarn add react-native@nightly

这将更新你的项目以使用每晚发布的、包含最新更改的 React Native 每夜构建版本。

更新你的项目以从源代码构建

无论是稳定版还是每夜构建版,你都将使用预编译的工件。如果你想切换到从源代码构建,以便直接测试你对框架的更改,你将需要如下编辑 android/settings.gradle 文件

差异
  // ...
include ':app'
includeBuild('../node_modules/@react-native/gradle-plugin')

+ includeBuild('../node_modules/react-native') {
+ dependencySubstitution {
+ substitute(module("com.facebook.react:react-android")).using(project(":packages:react-native:ReactAndroid"))
+ substitute(module("com.facebook.react:react-native")).using(project(":packages:react-native:ReactAndroid"))
+ substitute(module("com.facebook.react:hermes-android")).using(project(":packages:react-native:ReactAndroid:hermes-engine"))
+ substitute(module("com.facebook.react:hermes-engine")).using(project(":packages:react-native:ReactAndroid:hermes-engine"))
+ }
+ }

附加说明

从源代码构建可能需要很长时间,特别是对于第一次构建,因为它需要下载约 200 MB 的工件并编译原生代码。

每次你从仓库更新 react-native 版本时,构建目录可能会被删除,并且所有文件会重新下载。为了避免这种情况,你可能需要通过编辑 ~/.gradle/init.gradle 文件来更改你的构建目录路径

groovy
gradle.projectsLoaded {
rootProject.allprojects {
buildDir = "/path/to/build/directory/${rootProject.name}/${project.name}"
}
}

基本原理

使用 React Native 的推荐方法是始终更新到最新版本。我们对旧版本提供的支持在我们的支持政策中有所描述

从源代码构建的方法应该用于在向 React Native 提交拉取请求之前对修复进行端到端测试,我们不鼓励长期使用它。特别是分叉 React Native 或将你的设置切换为始终从源代码构建,将导致项目更难更新,并且通常会带来更糟糕的开发体验。