メインコンテンツへスキップ

ソースからのビルド方法

新機能やバグ修正に取り組む場合、まだリリースされていない最新機能を試す場合、またはコアにマージできないパッチを適用した独自のフォークをメンテナンスする場合には、React Nativeをソースからビルドする必要があります。

Android

前提条件

ソースからビルドするには、Android SDKがインストールされている必要があります。開発環境のセットアップガイドに従っていれば、すでにセットアップが完了しているはずです。

特定のバージョンのNDKやCMakeのような他のツールをインストールする必要はありません。Android SDKがソースからのビルドに必要なものを自動的にダウンロードしてくれるからです。

プロジェクトをnightlyビルドに向ける

React Nativeの最新の修正や機能を使用するには、以下のコマンドでプロジェクトをReact Nativeのnightlyバージョンを使用するように更新できます。

yarn add react-native@nightly

これにより、プロジェクトは最新の変更が含まれた、毎晩リリースされるReact Nativeのnightlyバージョンを使用するように更新されます。

プロジェクトをソースからビルドするように更新する

安定版リリースとnightlyビルドのどちらでも、あなたはプリコンパイルされた成果物を使用することになります。もし代わりにソースからビルドするように切り替えて、フレームワークへの変更を直接テストしたい場合は、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"))
+ }
+ }

補足

ソースからのビルドは、特に最初のビルドでは時間がかかることがあります。約200MBの成果物をダウンロードし、ネイティブコードをコンパイルする必要があるためです。

リポジトリから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をフォークしたり、常にソースからビルドするように設定を切り替えたりすると、プロジェクトの更新が困難になり、全体的に開発者体験が悪化します。