Expo SDK v33 にアップデートした話


2019年8月1日より、Android アプリが 64bit対応していないとストアにアップロードできなくなってしまうため、Expo SDK 33 にアップデート作業を行いました。

色々つまづいた箇所があったので、備忘録として残しておきます。

※ 絶賛アップデート中なので、随時更新 & 修正していきます。

参考サイト

公式ドキュメント
- https://blog.expo.io/expo-sdk-v33-0-0-is-now-available-52d1c99dfe4c
- https://docs.expo.io/versions/latest/expokit/expokit/#upgrading-expokit

アップデート手順に関しては、基本的に上記の公式ドキュメントの手順に従って進めていくといいと思います。

・公式質問ページ
https://forums.expo.io/c/sdk?order=activity
↑ とりあえずエラーになったらこちらのページで検索して似た事例を探しながらやると効率が良かったです。
世間の人もちょうど作業中みたいで、結構活発に更新されていました。

開発環境

before

  • Expo CLI 2.6.14 environment info:
    • System:
      • OS: macOS High Sierra 10.13.6
      • Shell: 3.2.57 - /bin/bash
    • Binaries:
      • Node: 10.15.0 - ~/.nodebrew/current/bin/node
      • npm: 6.9.0 - ~/.nodebrew/current/bin/npm
    • IDEs:
      • Android Studio: 3.4 AI-183.6156.11.34.5522156
      • Xcode: 10.1/10B61 - /usr/bin/xcodebuild
  • npmPackages:
  • expo-cli: 2.6.14

after

  • Expo CLI 2.6.14 environment info:
    • System:
    • OS: macOS High Sierra 10.13.6
      • Shell: 3.2.57 - /bin/bash
    • Binaries:
      • Node: 10.15.0 - ~/.nodebrew/current/bin/node
      • npm: 6.9.0 - ~/.nodebrew/current/bin/npm
    • IDEs:
      • Android Studio: 3.3 AI-182.5107.16.33.5314842
      • Xcode: 10.1/10B61 - /usr/bin/xcodebuild
    • npmPackages:
    • npmGlobalPackages:
      • expo-cli: 2.6.14

引っかかった問題

公式手順通りに進めていって、エラーが出てしまったところを記述しています。

iOS 関係

pod install 時に GoogleUtilities が2回インストールされてしまう

まさにこの症状
https://forums.expo.io/t/expo-v33-ios-cannot-install-react-native-firebase-due-to-incompatible-googleutilities/23607

解決策:Podfile の use_unimodules! を use_unimodules!(exclude: ['expo-face-detector']) に変更する
https://github.com/unimodules/react-native-unimodules/commit/80712ff82dd161d26bff040eb77af463650c8da9?short_path=04c6e90#diff-04c6e90faac2675aa89e2176d2eec7d8

Xcode ビルド時に ‘FirebaseCore/FIRAnalyticsConfiguration.h’ file not found って怒られる

react-native-firebase のバグだったらしい
→ v5.5.3 にて解消されている
https://github.com/invertase/react-native-firebase/issues/2259

expo publish が通らない

$ expo publish
実行時に、以下のようなエラーが表示されるパターン

[15:46:12] Unable to resolve module `react-native/Libraries/Components/View/ViewStylePropTypes` from `/プロジェクトディレクトリの path /node_modules/react-native-render-html/src/HTMLUtils.js`: Module `react-native/Libraries/Components/View/ViewStylePropTypes` does not exist in the Haste module map
[15:46:12]
[15:46:12] This might be related to https://github.com/facebook/react-native/issues/4968
[15:46:12] To resolve try the following:
[15:46:12]   1. Clear watchman watches: `watchman watch-del-all`.
[15:46:12]   2. Delete the `node_modules` folder: `rm -rf node_modules && npm install`.
[15:46:12]   3. Reset Metro Bundler cache: `rm -rf /tmp/metro-bundler-cache-*` or `npm start -- --reset-cache`.
[15:46:12]   4. Remove haste cache: `rm -rf /tmp/haste-map-react-native-packager-*`.
[15:46:12] Unable to resolve "react-native/Libraries/Components/View/ViewStylePropTypes" from "node_modules/react-native-render-html/src/HTMLUtils.js"
[15:46:12] Failed building JavaScript bundle.
[15:46:12] Cannot read property 'status' of undefined

→ react-native-render-html のバージョンが古かったせい
最新のバージョンへ更新したら解決しました

expo publish、expo start が通らない

以下のようなエラーが表示されるパターン

[17:07:24] - /プロジェクトディレクトリの path /assets/**
[17:07:24] Cannot read property 'forEach' of undefined
[17:07:24] Set EXPO_DEBUG=true in your env to view the stack trace.

→ app.js の以下の部分が原因

"assetBundlePatterns": [
        "assets/**"
]

assets/* に変更
https://github.com/expo/expo-cli/issues/179