2019年7月31日水曜日

expo initで出てくるbare-minimum(react-native-unimodules)のreact-nativeのバージョンをv0.59.8 -> v0.60.4にしたお話

  • このエントリーをはてなブックマークに追加

Expoチームが開発してるreact-native-unimodules(bare workflow)というものがあるんだけど、これは素のreact-nativeでExpoのコンポーネントを使えるようにしちゃおう的なパッケージだったり。
で、これの何がすごいってもちろんExpoの便利なコンポーネントを使えるのもそうなんだけど、ExpoKitと違ってreact-nativeのバージョンが自由に使えるということ。
なので最新のreact-nativeもいつでも使える的な。

ということで今日はexpo init -> bare-minimum (react-native-unimodules)したときのプロジェクトを最新版のreact-nativeで使うには的なお話をば。

https://github.com/watanabeyu/rn-update-repo

とりあえずこれがそのリポジトリ。
以下にざっくりアップロード手順を書いていこうかと。


■全体として

$ react-native unlink react-native-reanimated
$ react-native unlink react-native-gesture-handler

まずはunlinkをしないといけない的な。
というのもreact-native v0.60からreact-native linkがautoになるからlinkを解除しておきましょう的な。

そしたら後はReact Native upgrade guideを参考にやっていきましょう的な。


■iOS

ブランチ

・ios/Podfileを編集
react関連がsubspecsじゃなくなったのでちゃんと指定しましょう的な。

ってな感じでOK。
あとはpod installして終わりみたいな。


■Android

変更内容
変更する内容が多いから各ファイル毎に解説をする気は全くないんだけど。
Upgrade guideを参考にすると詰んでしまうところがあるからそこらへんをざっくり書いていこうかと。

・android/app/build.gradleにてsigningConfigs系のアップグレードは書かないでよい
・signingConfigsに関連してkeystores系は消さないでよい
・android/build.gradleの終わりぐらいに書いてあるtask wrapper(type: Wrapper) {でエラーが出ちゃうのでwrapper {とする
jetifierをインストールしてpreandroidで走らせるようにする
・Could not determine the dependencies of task ':unimodules-react-native-adapter:compileDebugAidl'.はjetifierでカバーできないので、node_modules/@unimodules/react-native-adapter/android/build.gradleを手動で変更する

ここら辺だけで良かった気がする。


ってなわけでこんな感じで行ってv0.60.4にアップデートできたっていう。

iOSのアップデートは簡単なんだけど、Androidのアップデートが辛すぎた的な。
というのもauto linkの関係はもちろんなんだけど、androidもX対応が始まったわけで。
で、このX系はjetifierを使えばいいんだけど、jetifierで対応するべきところはnode_modules内にもあったりするわけで。
とりあえず今回は手動で変更しちゃってるんだけど、CIとかでビルドとかするって考えるとなると何かシェルスクリプトなどを書くなどしないといけないなぁっていう。

でも今回のv0.60への対応は割と破壊的な部分があったんだけどこれが見事に対応できてよかったなぁ的なみたいな感じ。
hermesも使いたいし早めに対応しておくとよいかも的なみたいな。

0 件のコメント:

コメントを投稿

Adsense