2
4

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 3 years have passed since last update.

【ReactNative】Xcodeでビルドできなくなったときに対処したこと

Posted at

概要

React Nativeを0.64.0にアップグレードしたときにXcodeでビルドもアーカイブもできなくなったので、解消方法を書いています。

###環境
macbook pro / Catalina

Issue1. jsbundle: No such file or directory

Error

Xcodeにて以下のエラー
error: /****/native/ios/main.jsbundle: No such file or directory (in target 'app-name' from project 'app-name')

/****/native/ios/main.jsbundle: No such file or directory

Solution

①NodeのPathを調べる / Checking the Path of a Node

$ which node等でnodeのpathを調べる。

e.g.
$ which node
/Users/miguel/.anyenv/envs/nodenv/shims/node

②XcodeでNodeのPathを編集 / Edit Node's Path in Xcode

Projectファイル > TARGETS > APP Name > Build Phases > Bundel React Native code and imageにて、

export NODE_BINARY=node
../node_modules/react-native/packager/react-native-xcode.sh

となっているところを、 / It's written...

export NODE_BINARY=/Users/miguel/.anyenv/envs/nodenv/shims/node
../node_modules/react-native/scripts/react-native-xcode.sh

自分のローカルのNodeのPathに合わせてに編集。 / Edit to fit your local Node Path.

③メトロバンドラー / Metro-bandler

バンドルを手動で作成する。
React Nativeを0.64.0にアップグレードしたときは一度手動で作成しないといけないらしい。(普段はXcodeが自動で作成してくれてる。)
※2回目以降は不要。

Create the bundle manually.
When I upgraded React Native to 0.64.0, I heard that I have to create the bundle manually once. (Normally, Xcode automatically creates the bundle for you.
(Normally, Xcode creates it automatically.) You don`t need to do it the second time or later.

$ react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios

④Run

$ yarn ios

これでビルドできた。

Issue2: Can’t find ‘node’ binary to build React Native bundle

Error

Xcodeにて以下のエラー
Can’t find ‘node’ binary to build React Native bundle

Solution

デフォルトのシェルをzshにしていても、Xcodeがbashで動くことがあるみたい。(まだ何故かは分かってないです。詳しい方いたらご教示ください。)
結果的に、bash_profileでnodeのパスを通さないとビルドできなかった。
nodeのpathをzshrc/bashprofileどちらにも通した後、Issue1の解消方法を実行することで解消した。

It seems that Xcode sometimes runs in bash even if the default shell is set to zsh.
As a result, I could not build without passing the node path in bash_profile.
The problem was solved by passing the path of node to both zshrc/bashprofile and executing the solution of Issue1 .

Bundle React Native code and imagesのShellが /bin/sh になっているからか?と思い/bin/zshにもしてみたが、結果は変わらず、やはりbashを見ているようだった。

image.png

解決した

まだ不明点もありますが、これで無事にビルド・アーカイブができるようになりました。
ただm1やbig surの方は、これでも上手くいかないこともあるみたいです。

間違い・補足等ありましたら、教えていただけたら幸いです。

2
4
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
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?