知識のリンク集

技術系アウトプット

React Native 0.58.4 アップデート

0.58系列変更点

github.com


アップデート手順

1: react-native-git-upgrade

react-native-git-upgradeコマンド実行でエラー
f:id:yuri_iOS:20190206170450p:plain

.babelrcをreact-native-git-upgradeコマンド実行時のみファイル名を変更することで回避できる。
情報元: https://github.com/facebook/react-native/issues/21241

2月7日の時点ではReact Native 0.58.4, React 16.6.3に更新される。

2: node_modulesとバージョン管理ファイル類を削除

削除対象

  • node_modules配下
  • yarn.lock
  • ios/Pods
  • ios/Podfile.lock
3: 手動で調節

react-domとreact-test-rendererを16.6.3に
react-test-rendererとreact-domはreactにあわせてバージョンアップされている。
react-native-git-upgradeコマンドによってreactのバージョンをあげた際には常に他2つもバージョンをあわせててあげている。

react-native-modalbox は1.7.1に
0.58.xでBackAndroidがなくなったことによる修正を1.7.0で行っている。
問題: https://github.com/dooboolab/talktalk-rn/pull/13
修正: https://github.com/maxs15/react-native-modalbox/pull/262


4: npmモジュールの取得

コマンド "npm cache clean --force" でキャッシュを削除した上でコマンド "yarn" を実行。
※ yarnが古くないことを事前に確認してからyarnした方が良い。
 現在の安定バージョンは1.3.0

5: コンフリクト解消

iOS
App.xcodeproj/project.pbxproj
f:id:yuri_iOS:20190207193423p:plain
JavaScriptCore.frameworkがところどころ加わって既存のファイルとコンフリクトを起こしているので両方残す形で修正

Android
android/app/src/main/AndroidManifest.xml
少し差分が出るが実質

android:roundIcon="@mipmap/ic_launcher_round"

の項目が増えただけ。

6: ネイティブモジュールの取得

iOS
コマンド "pod install" を実行

Android
Android Studioにて "sync Gradle" を実行

7: ビルド

iOS
Product > Clean Build Folderを実行した上でRUN

Android
Build > Clean Projectを実行した上でRUN


Jest

RCTSafeAreaViewとTextのDOMツリーに変化がある。
実行は問題ないのでスナップショットを更新して終了。

RCTSafeAreaView
"emulateUnlessSupported={true}" が追加されている
f:id:yuri_iOS:20190207200839p:plain

Text
ellipsizeModeをしている箇所に "truncateLocation="smart"" が追加されている
f:id:yuri_iOS:20190207200939p:plain


Flow

flowのバージョンが "^0.86.0" にあがったのでpackage.jsonのflow-binのバージョンも^0.86.0にあげる


**アーカイブビルド
iOS
Xcode10でアーカイブビルドが失敗します。
新しいビルドシステムはまだ問題がおおいですね。
Podfileに3行記述を追加するだけで解決できます。
修正: https://github.com/facebook/react-native/issues/21583


最後に

ここから先、根拠のない情報で申し訳ないのですが誰かの参考になればと思い念のため紹介します。

iOSでアプリの起動が失敗する。
具体的にはビルドフェーズは成功し、パッケージャーもエラーはないのにシミュレーターが起動後スプラッシュスクリーンから進まないという状況になる。

私の場合下記手順でアプリが無事にスプラッシュスクリーンより先に進む。

1: Workspace SttingsからPer-User Workspace SettingのBuild Systemを一回 "Legacy Build System" にした上でビルド。
2: 下記エラーが出力され確実にビルドが失敗する。
f:id:yuri_iOS:20190207202436p:plain
3: 再度Workspace Sttingsを開いてPer-User Workspace SettingのBuild Systemを "New Build System" に変更してビルド。