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
ができれば、です。
自動化
glogのビルドはnode_modules
ディレクトリを削除したときなどはいちいち実行しないといけないので、以下のnpmモジュールを組み込んで、packge.json
のpostinstall
などで実行することをオススメします。
yarn add rhdeck/react-native-fix-xcode-10
:
"scripts": {
:
"postinstall": "react-native fix-xcode"
},
:
手動ビルドをしておくことが必要
このモジュール、ビルド時に生成されるディレクトリがすでに存在する前提で組まれているので、一度アプリのビルドを実行しておくことがある前提になっています(当然エラーはします)。
react-native run-ios
で手動実行しておくか、Xcodeで一度ビルドを実行しておきましょう。
ビルドシステムの変更によるエラー
Xcode 10からビルドシステムが新しくなっており、既存のReact Nativeだとまだ対応できていない部分があります。
React Nativeもfacebook/react-native #19573で対応中ですが、正式にはまだ先になりそうです(2018年12月15日現在)。
とりあえず、古いビルドシステムに設定を変更すれば通ります。
具体的には と同じIssueのコメント にあるように、具体的には[ と同じIssueのコメント](
- Xcode 10を起動する。
-
File
Workspace Settings
を選びます。 -
Build System
をLegacy Build System
に変更する。
この際、出力される ios/プロジェクト名.xcworkspace/xcshareddata/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より
- RCTWebSocketのfishhookターゲットをビルド。
-
~/Library/Developer/Xcode/DerivedData/プロジェクト名-ランダムな文字列/Build/Products/Debug-iphonesimulator/
以下のlibfishhook.a
ファイルをnode_modules/react-native/Libraries/Websocket
にコピーする。