【React Native】地獄のビルドエラーと戦った記録

React Native

最初はReact NativeがいちいちOSに合わせて記述しなくていい夢のような存在だと思っていました。( このあと待っている壮絶なエラーとの戦いは知らずに… )

昨日までは元気に動いていたアプリが次の日になったら真っ赤な画面でターミナルには大量のエラー文だらけ――。

何度かに1回だけ正常に動く!けど次にはエラー…

podを何度インストールし直してもダメ

こんな状況になっていました。当時は数人でAndroidサイドを中心にアプリの開発を進めていて、僕はiOSサイドの開発作業担当でした。前日まで動いていたものが動かない!復旧作業に明け暮れるも1つ直ったら次は2つ、3つと新しいエラーが止まらない現実に絶望して半泣きで作業を進め気がついたときには半年が経過…

当初の開発計画はとっくにポシャり( お金をもらう案件でなかったのが幸いだった )「 始めた以上やりきらないといけない 」という辞めるに辞められない状況が続き、精神的にもしんどかった思い出です。( 今でもビルドを押すのは怖いし、code 65は見たくない… )

この記事は僕と同じ境遇の方がもし居たら助けになればと思い、当時戦っていたエラーと対処法をまとめました。正直なところ、どれが決定打だったのかはハッキリしませんが僕の環境ではこれでどうにかなりました。

本記事は実際に開発していた時期から時間が経過しているため、過去の記憶とメモを振り返りながら執筆をしています。そのため正確情報でない箇所が多々存在します。

本記事の内容を試した際に発生した不具合やトラブルについて、筆者は一切責任を負うことは出来ませんので、参考にされる場合は必ずバックアップをとり、自己責任で行ってください。

戦ったエラーまとめ

A. Hermesエンジンの設定をXcodeでfalseにする。

A. サンドボックスのオフ。

  1. Xcodeでプロジェクトファイルを選択。
  2. Build Settings タブを開く。
  3. 「User Script Sandboxing」 を検索。
  4. 設定を 『 No 』 に変更する。

A. Xcodeのバージョンを落とす。さらに必要であればライブラリ管理ツールであるCocoa Podsのバージョンも落とす。

個人的な見解ですが、使用しているライブラリとビルド環境との相性が大きな原因だと考えています。最新のXcodeがリリースされた直後は、既存のライブラリがその変化に対応しきれず、エラーを吐くことがよくあります。

また、アプリを組み立てる「ビルド」の工程では、XcodeだけでなくCocoaPodsも密接に関係しています。Xcode側が求めるビルド設定と、CocoaPodsが生成するスクリプトの整合性を整えることで、びっくりするほどエラーが解決されることがあります。

過去バージョンのXcodeダウンロードサイト

Apple Developer – More Download:https://developer.apple.com/download/all

検索ボックスに『 Xcode 』と入れると過去バージョンが出てきます。

『 View Details 』を押してダウンロードしたいファイルをクリックするとダウンロードが始まります。

旧バージョンXcodeダウンロードサイト紹介用PNG

出典:Apple Developer – More Download

https://developer.apple.com/download/all/

( 2026年2月9日参照時点の写真です )

A. module. Mapファイルの確認とCocoa Podsのバージョンを下げる。

当時実施に行った対策ですが、これは意味があったのか正直謎なところです。

A. Xcodeワークスペースを開いた状態でビルドする。

当時のメモに書いてあったことですが、一切記憶に残ってないので解決するかは…。

そのほかで試した解決方法!

上記以外に行ったこと!( これからの内容のほうが影響は大きかった気がします )

とりあえず、キャッシュ関連やライブラリを消し飛ばしてクリーンな状態に戻す。

実際にエラーを解決できるようになった最後の方ではこれを多用しました。

当時実際に使用していた削除用Scriptの中身

rm -rf ~/Library/Developer/Xcode/DerivedData
pod cache clean --all
rm -rf Pods
rm -r Podfile.lock
pod install --repo-update

それぞれの行の解説です!!下記から見たい1文を押すと解説が出現!

rm -rf ~/Library/Developer/Xcode/DerivedData

Xcodeビルド時に生成されるデータを削除する

コードを変えても反映されなかったり、古いキャッシュが更新した先のビルドを妨害するのを防ぐため!

pod cache clean –all

PCに保存されるライブラリのダウンロード済みキャッシュを削除する

古いライブラリ情報を残さないようにするため!

rm -rf Pods

ios/Podsにインストールされたライブラリ群を削除する

壊れたライブラリ群を削除してインストールし直すため!

rm -r Podfile.lock

Podfileに記述された最新状態の依存関係をインストール出来るように削除する

最新バージョンにするうえで以前のバージョンが優先されるのを回避するため!

pod install –repo-update

『 –repo-update 』をつけることでCocoaPodsのリポジトリを最新に更新してからインストールをする

最新の依存関係でビルド環境を整えるため!

実は私の環境には諸事情でウイルス対策ソフトが入っていました。正直これの設定ミスなどが一番の理由だったのでは?と今では思っています。

私の環境の設定ではフォルダ保護がオンになっていました。開発中していたアプリのフォルダはこの保護されたフォルダの中に含まれていました。

前に上げたような方法で修正を加えてもファイルだ足らない!というエラーが出続けていました。『 まさか… 』と思ってウイルス対策ソフトの保護機能をOFFにしたところ…

『 エラーが消えた――

すべての人がこうなる訳ではありませんし、対策ソフト自体には普段使いで助かったこともあります。僕自身の設定と使い方が原因の大部分ではありますが、ウイルス対策ソフトが入っている環境でしたら一度確認してみるのも手だと思います。

  • ファイル、フォルダに『 _ 』をつけてもビルド対象外にはならず退避できない
    Xcodeが自動マッピングするのでwithout expoの前に配置するようにする。
  • ビルド中にビルドを止めない
    止めた場合はキャッシュを消し、再度ビルドする。
  • 実機ビルドで『 信頼されていないデベロッパ 』と出た場合
    実機スマホから設定からアプリを開いてアプリをビルドした際に使用したメールアドレスを『 安全だよ! 』と手動で許可を出す。

さいごに

当時の開発は「まずAndroidで新機能の実装!その後、ある程度機能が形になったところでiOSに対応させる」というペースで開発を行っていた為、iOS側特有のエラーが解決されないまま蓄積した状態からのスタートでした。( 今振り返っても、あまりにも行き当たりばったり過ぎたと反省しています… )

ただ、この経験のおかげで今は初期の環境構築と構成定義には特に慎重に時間をかけて取り組むようになりました。

皆さんもマルチプラットフォーム開発における環境構築と開発の後回しにはご注意ください!!本記事が少しでも皆さんのトラブルシューティングの役に立てば幸いです。

最後までお読み頂き、ありがとうございました!

次は何をいじくり回しましょうか?お楽しみに!

コメント

タイトルとURLをコピーしました