やりたいこと
- ReactNativeのソースコードに手を入れた独自のバージョンを利用したい
- 具体的には下記のPRを取り込んで使いたかった
↑ここにやり方が記載してあるが、ちょっと説明が足りない感じだったので補足するための記事です。
ステップ1
$ cd {cloneしてきたdirectory}
$ git checkout -d {リリースに利用したいブランチ名}
$ npm i # ドキュメントにはこれが無い
ステップ2
cloneしてきた時点ではReactNativeのバージョンがセットされていないので、手動でセットする必要がある。
このcommitを参考に、これらのファイルのバージョンを書き換えていく。
どのバージョンをセットすべきなのかよくわかっていないのだが、
- こういうcommit
- ブランチを眺めて最も近いstableのバージョンを探す
という感じでバージョンをセットした。
ステップ3
npm install
したときに今回ビルドするバイナリをダウンロードできるように、package.jsonに下記のように追記する。
"files": [
+ "android",
"!template/node_modules",
この追記をすることで、./android/
以下のファイルがnpm install時に落ちてくるようになる。
ステップ4
以降はドキュメント通り
# このビルドはめちゃくちゃ時間かかる。手元のマシンだと40分かかった
$ docker run --rm --name rn-build -v $PWD:/pwd -w /pwd reactnativecommunity/react-native-android /bin/sh -c "./gradlew installArchives"
$ git add android --force
$ git commit -a -m 'my react native forked release'
$ git push
参考例
// package.json
"react-native": "github:abeyuya/react-native#dist",
その他
- ドキュメントに記載してあるのはAndroid用にビルドしたライブラリを生成する方法
- もしiOSのソースコードにのみ手を加えたい場合は、patch-packageを使うほうがお手軽だったりする
- iOSのライブラリ部分のソースコードはアプリビルド時に一緒にビルドされるので、Androidのように事前にビルドしたバイナリを配布しておく必要がない
- そのためローカルでビルド前にpatchをあてる運用が可能
- jsのソースコードにのみ手を加えたい場合も、iOSと同じくpatch-packageを使うほうがお手軽そう