mac m1晶片踩坑記


Posted by Limon on 2021-07-30

離職前一個禮拜公司買了新的mac mini,新的React native專案要開始了,主管要我幫忙設定環境,想說應該很快就弄完了,結果弄了兩天XD,簡單記錄一下過程。

一開始裝pod install一直卡卡卡,查半天一直以為是Xcode沒有設定arm64,仔細檢查後發現以前的開發團隊早就設定好了,尤其是Excluded Architectures=>Any ios Simulator SDK,怎麼查都是在講設定的文章,結果問題根本這些沒關係。

後來查到這篇文章pod安装踩坑记录,原來是因為m1晶片不支援x86底下開發的package,尤其新的專案又是react native,要等到套件作者更新可能要一段時間,按照文章說的把會用到的應用程式改成使用Rosetta打開。


建議這三個應用程式一定要打開,問題才會比較少。

  1. 終端機 (在工具程式資料夾)
  2. Xcode
  3. Simulator(預設路徑:/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app)

如果pod install還是裝不起來,可以試試用x86_64的pod install:

先安裝

sudo arch -x86_64 gem install ffi

再打指令

arch -x86_64 pod install

'Google-Maps-iOS-Utils/GMUKMLParser.h' file not

react-native-maps重新安裝完在Xcode build後,一定會出現這個bug

#import <Google_Maps_iOS_Utils/GMUKMLParser.h>

解決方法就是像上面的程式碼的'-改成_,再build一次就可以了。

以為解脫了,然後又出現了新的bug(昏倒) (´・_・`)

error message: duplicate symbols for architecture x86_64

簡單來說就是錯誤訊息裡提到的package引用了兩次,後來去react-native-maps github查看安裝流程文件,原本裝這個package時需要在Xcode目錄區參考AirgoogleMaps、AirMaps資料夾,於是我把這兩個從Xcode Delete references之後就沒有這個bug了。

猜測原因應該是React Native 60之後的版本都有 auto-link,因此不再需要手動增加參考路徑。

build system

Xcode之後會拋棄舊式的compiler,更改設定在Xcode=>File=>Workspace Settings=>Build System 設定為『New Build System』

這些都設定完之後,在模擬器成功開啟ios app了(灑花)٩(^ᴗ^)۶

Firebase/Core (~>7.6.0)

結果隔天母公司有人更新了package.json,把react-native-Firebase更新到了最新版,拉新code之後,pod install又裝不起來了,嗚嗚嗚 〒.〒

錯誤訊息大概就是新套件要用到Firebase/Core 7.6.0,但是本地端cocoapods找不到,輸入pod update repo也不起作用,本來想說去 ~/.cocoapods/repos更新要用的套件就好了,結果打了指令還是不能更新...,最後是把cocoapods整個移除重新安裝一次,然後在podfile新增 pod 'Firebase/Core','7.6.0',再一次pod install終於載到新版本的Firebase/Core,但是把這行從podfile移除掉又變不行裝...,明明本地端已經確定裝到最新版,照理說應該不用加這行也可以運行,反正目前可以build開始開發就好了XD。


#React Native #mac m1







Related Posts

每日心得筆記 2020-06-12

每日心得筆記 2020-06-12

淺談 Redux:狀態管理是一門學問

淺談 Redux:狀態管理是一門學問

Lidemy HTTP Challenge 破關過程手札

Lidemy HTTP Challenge 破關過程手札


Comments