4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

React NativeをXcode 10にするとビルドできない問題

Last updated at Posted at 2018-12-15

Xcode 10が出てきてから、少し立ちますが、React Nativeはまだ正式に対応が終わっていないらしく、以前から開発しているアプリがビルドできない可能性があります。

glogの手動ビルド

React Nativeが内部で使っているglogがうまくビルドできない場合があります。

facebook/react-native #20774より

cd node_modules/react-native/scripts/
./ios-install-third-party.sh
cd ../third-party/glog-0.3.4/
../../scripts/ios-configure-glog.sh

これでsrc/以下にconfig.hができれば、:ok:です。

自動化

glogのビルドはnode_modulesディレクトリを削除したときなどはいちいち実行しないといけないので、以下のnpmモジュールを組み込んで、packge.jsonpostinstallなどで実行することをオススメします。

yarn add rhdeck/react-native-fix-xcode-10
package.json
    :
  "scripts": {
      :
    "postinstall": "react-native fix-xcode"
  },
    :

:warning: 手動ビルドをしておくことが必要

このモジュール、ビルド時に生成されるディレクトリがすでに存在する前提で組まれているので、一度アプリのビルドを実行しておくことがある前提になっています(当然エラーはします)。

react-native run-ios

で手動実行しておくか、Xcodeで一度ビルドを実行しておきましょう。

ビルドシステムの変更によるエラー

Xcode 10からビルドシステムが新しくなっており、既存のReact Nativeだとまだ対応できていない部分があります。

React Nativeもfacebook/react-native #19573で対応中ですが、正式にはまだ先になりそうです(2018年12月15日現在)。

とりあえず、古いビルドシステムに設定を変更すれば通ります。
具体的には:arrow_up: と同じIssueのコメント にあるように、具体的には[:arrow_up: と同じIssueのコメント](

  1. Xcode 10を起動する。
  2. File :arrow_right: Workspace Settings を選びます。
  3. Build SystemLegacy Build Systemに変更する。

react_native_xcode_10_legacy_build.png

この際、出力される ios/プロジェクト名.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings をソースコード管理にチェックインするのをお忘れなく :exclamation:
以下のようなファイルです。

WorkspaceSettings.xcsettings
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>BuildSystemType</key>
    <string>Original</string>
</dict>
</plist>

なお、どうしても手動でやりたい場合は自分が直面したビルドシステムによるエラーは以下のlibfishhook.a に関するものでしたので、その対応方法だけ記載しておきます。

facebook/react-native #19569より

  1. RCTWebSocketのfishhookターゲットをビルド。
  2. ~/Library/Developer/Xcode/DerivedData/プロジェクト名-ランダムな文字列/Build/Products/Debug-iphonesimulator/以下の libfishhook.a ファイルを node_modules/react-native/Libraries/Websocket にコピーする。
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?