簡體   English   中英

在 m1 mac 上安裝 hermes 引擎時出現問題

[英]Trouble with pod install of hermes engine on m1 mac

我從 0.70.6 開始創建了一個 React-Native 應用程序,經歷了 cocoapods 的悲痛以及蘋果硅芯片 (M2) 開發帶來的一切,並讓它工作並在項目上做了很多工作,然后(在創建一個 GitHub 回購協議后)將它交給一位同事來做一些設計工作(他在 M1 上)......他們的機器上也有很多問題,但最終讓它工作了。 現在,React-Native 0.71.0 已經發布,我完成了升級它的所有步驟並讓它在我的 M2 機器上運行,完全沒有問題,但是在他們的機器上推送並獲取它之后,我無法找到由於無法加載 hermes 引擎而導致 pod 安裝失敗的解決方案,彈出的幾個錯誤是,

[!] 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...但是當然,我必須設置一些標志才能實際能夠將它們安裝在我的機器上,我認為它們不會影響我的項目,因為 bundle install 和 pod install 使用 3.2.0 工作。

列出我在這些機器上安裝的所有內容:

  • 捆綁器 -> 2.4.1
  • cocoapods -> 1.11.3
  • ruby -> 3.2.0
  • 節點 -> 18.13.0
  • xcode -> 14.2 (使用命令行工具)

另一個錯誤報告,以防有用:

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")
 #  -------------------------------------------

如果為了清楚起見我需要包含任何信息,我會根據需要更新這篇文章。

  • 我試過刪除 Pods 文件,然后 pod install ...同樣的錯誤
  • 移除 Podfile.lock,清理緩存並移除 Pod...同樣的錯誤
  • 刪除 node_modules/ npm cache clean --force && npm install
    • 然后執行npx pod-install以希望讓節點處理事情......同樣的錯誤
  • Ran pod deintegrate和 pod install... 很可怕,破壞了東西,所以恢復,回到方塊 1

我今天早些時候嘗試過的其他事情我不記得了,它們已經回家了,所以我無法訪問我運行的所有命令,但這些是最新鮮的,在我看得更清楚之前,我將嘗試獲取需要設置的標志以安裝舊版本的 ruby 以查看是否有任何作用

最后要提的是,我們最近也買了一台 M1 Mac Mini,我完成了所有步驟以使項目正常運行……最終與其他 M1 一樣,但再次嘗試那些 LD_FLAGS 或不管它是什么,如果那是解決問題的方法,請更新此線程


查看與這些相關的舊問題,人們找到了使用 -x86_64 命令的解決方法,並且自從維護人員發布了支持 arm64 的新版本以來,我已經設法做到了這一點,但如果我在任何地方需要它,那就這樣吧,我會盡我所能

不需要安裝其他版本的 ruby 或任何東西,我通過做一些我發現很臟的事情來安裝 hermes-engine pod ...它提到的那個文件中只有 go 並刪除exists? 所以它只是說exist? 然后我也將 cocoapods 從1.11.3降級到1.11.2並查看 .podspec 文件的布局方式,它有條件地加載引擎,首先查看是否已下載到機器上,然后一旦發現沒有,那就是它最終用存在條件遇到這個問題代碼的地方......所以它下載了所有東西並且工作正常並且我能夠在mac mini上構建和運行我的應用程序......但是當在另一台m1機器上嘗試相同的步驟時,我得到了一個非常有用的錯誤—— Oh no, an error occured ……完美,現在我想知道我所做的這些更改是否會影響 M2 pod 命令

如果在接下來的幾天內沒有提供更好的答案,我會假設這是最好的解決方案,直到 react-native 將他們的 ruby 版本升級到3.2.0 ,經過更多的挖掘......這是exists? 刪除文件方法

但仍然希望對使用 M1 MacBook 的其他人提供反饋,這些人在穩定版本 React-Native 0.71.0 上遇到這些問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM