m1 mac での hermes エンジンのポッド インストールに関する問題
概要
私は 0.70.6 の時点で React-Native アプリケーションを作成し、ココアポッドや Apple のシリコン チップ (M2) での開発に伴うすべてのことを乗り越えて、それを動作させることができ、プロジェクトでかなりの作業を行いました。そして、(GitHub リポジトリを作成した後) それを設計作業を行う同僚 (M1 を使用している) に渡しました。彼らのマシンにも多くの問題がありましたが、最終的には動作するようになりました。 React-Native 0.71.0 がリリースされました。アップグレードするためのすべての手順を実行し、M2 マシンで動作するようになりました。まったく問題ありませんでしたが、プッシュしてマシンにインストールした後も、 hermes エンジンをロードできないためにポッドのインストールが失敗する解決策を見つけることができました。ポップアップ表示されるいくつかのエラーは、
[!] Failed to load 'hermes-engine' podspec:
[!] Invalid `hermes-engine.podspec` file: undefined method 'exists?' for FileClass.
私はこれが何を意味するのかを一日中探していましたが (私は React-Native やモバイル開発全般についてはかなり初心者です)、「存在する?」という情報を集めました。 Ruby の特定のバージョン (私は 3.2.0 を使用しています) では非推奨になりましたが、私のマシンでは問題なく動作するため、何が足りないのか混乱しています。私は chruby を使用して Ruby をインストールしてきました。唯一の違いは、私のマシンに Ruby バージョン 2.7.5 と 2.7.7 があることです。しかし、もちろん、実際にインストールするために設定する必要のあるフラグがあります。それらを自分のマシンにインストールすることはできます。バンドル インストールとポッド インストールは 3.2.0 を使用して機能するため、プロジェクトに影響するとは思えません。
これらのマシンにインストールしたものをすべてリストするには:
役立つ場合に備えて、もう 1 つのエラー報告について説明します。
Command `pod install` failed.
└─ Cause: Failed to load 'hermes-engine' podspec:
[!] Invalid `hermes-engine.podspec` file: undefined method `exists?' for File:Class.
# from /Users/<user>/projects/<app_dir>/node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec:46
# -------------------------------------------
# source[:http] = "file://#{destination_path}"
> elsif File.exists?(hermestag_file) && isInCI
# Pod::UI.puts '[Hermes] Detected that you are on a React Native release branch, building Hermes from source but fetched from tag...'.yellow if Object.const_defined?("Pod::UI")
# -------------------------------------------
明確にするために含める必要がある情報がある場合は、必要に応じてこの投稿を更新します。
他にも今日の早い時間に試したことはありますが思い出せません。それらは家に帰ってしまったので、実行したすべてのコマンドにアクセスできませんが、これらが最も新鮮で、より明確な見解が得られるまで、古いバージョンの Ruby をインストールするために設定する必要があるフラグを取得して、何か効果があるかどうかを確認してみます。
最後にもう 1 つ述べておきますが、私たちも最近 M1 Mac Mini を入手し、プロジェクトを機能させるためのすべての手順を実行しました…結局他の M1 と同じ轍を踏むことになりましたが、もう一度、これらの LD_FLAGS やそれが何であれ、それが問題を解決するものである場合は、このスレッドを更新してください
これらに関連する古い問題を調べてみると、人々は -x86_64 コマンドを使用した回避策を見つけました。メンテナーが arm64 をサポートする新しいバージョンをリリースしたため、私は何もせずにここまで到達できましたが、どこかで必要になった場合はそれで構いません。現時点でもらえるものはもらいます
解決策
この行を Podfile に追加します
:hermes_enabled => false、