eas buildでBuild failed: The "Run fastlane" step failed with an unknown error.
TL;DR
- 古いexpo sdkのプロジェクト
- eas buildで
Build failed: The "Run fastlane" step failed with an unknown error.
- eas buildで使われるXcodeのバージョンが上がったため
- patch-packageを使ってyogaにパッチを当てる
経緯
古いexpoのアプリをbuildしようとしたら Build failed: The "Run fastlane" step failed with an unknown error.
が出てエラーになった。
調べるとeas buildする環境におけるXcodeのバージョンがあがり、それが原因でエラーになっている模様。
expoのbuildログを見ると以下のように出ていた。
❌ (node_modules/react-native/ReactCommon/yoga/yoga/Yoga.cpp:2289:9)
2287 | generationCount);
2288 | node->setLayoutHadOverflow(
> 2289 | node->getLayout().hadOverflow() |
| ^ use of bitwise '|' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
2290 | currentRelativeChild->getLayout().hadOverflow());
2291 | }
2292 | return deltaFreeSpace;
react-nativeに含まれるyogaの中のオペレーターの記述方法に誤りがある。
react-nativeを 0.69
以上に更新すれば治るらしいが、
reactや他のパッケージもアップグレードしないといけなくなってしまうので今回は難しかった。
そのため、パッチを当てて修正することにした
発生した環境
- expo sdk 44
- react-native@0.64.3
修正内容
まず patch-package
をインストール
npm i patch-package --save-dev
該当のファイル node_modules/react-native/ReactCommon/yoga/yoga/Yoga.cpp
を直接開いて修正する。
hadOverflow
で検索すると該当箇所が見つかるので以下のように修正する
node->getLayout().hadOverflow() |
↓
node->getLayout().hadOverflow() ||
ファイルを修正後、以下を実行
npx patch-package react-native
すると プロジェクトルート/patches/react-native+0.64.3.patch
というファイルができる
最後に npm install
された後もpatchが適用されるように package.json
に以下を追加
{
...
scripts: {
...
"postinstall": "patch-package"
}
}
これで eas build
での該当エラーが解消した