使用expo react native 開發的人, 最近會碰到ios SDK版本太舊無法更新app的問題
必須使用更新版的SDK去編才可以,
加上expo官方將在2023年停止expo服務, 全面改用EAS, 就花了點時間來一口氣更新吧
EAS Build 和expo build其實本質上是一樣的東西,但EAS 似乎可以編更快, 檔案更小
只要額外裝一下eas-cli 即可使用,
以下是個人筆記36, 37條的記錄
36. 從sdk42升級到44
$ expo upgrade sdk 44
之後選擇44版
升級完之後會出現如下錯誤
Unable to resolve module react-native-safe-area-context from /var/www/html/react_native/myword/node_modules/@react-navigation/bottom-tabs/src/views/BottomTabBar.tsx: react-native-safe-area-context could not be found within the project or in these directories:
node_modules
../node_modules
這是因為bottom-tabs使用safeareaView的關係, 但safeAreaView己經從react-native移到react-native-safe-area-context裡了,
所以為了安全起見, 把程式碼裡的safeAreaView全部改成view ,但如果堅持要使用的話, 可以安裝完react-native-safe-area-context後再重新import (因為import來源已經不一樣),我的做法是直接捨棄不用,因為safeAreaView也只有在IOS有效, 我個人是寫雙平台, 趁這個機會整個改掉
接著
$ expo install react-native-safe-area-context
$ npm start --reset-cache
這樣一來應該就可以成功了, 但如果碰到bottom-tabs有異常的情況, 因為SDK升上去後有可能之前的其它套件版本不能用, 重新安裝bottom-tabs即可(其它套件亦同)
37. 從expo build換到 eas build
這個是expo官方提的, expo線上編譯只到2023年, 之會全部改成eas build , eas編更快, 編出來的檔案更小
首先, 要先裝eas 這個程式
$npm install -g eas-cli
但這個程式需要node 14版以上, 所以有問題的話可能要先升級node 版本
$ sudo n 14 (升node有好幾種方式的樣子, 還有什麼nvm的, 依自己的環境去google吧)
裝好之後使用指令在專案下面建立eas設定檔
$ eas build:configure
這邊會出現問你的設定檔想要針對哪個平台建立, 我這邊選all
要送出到EAS進行雲端編譯時, 進到專案目錄下打上
$ eas login
之後依據想要編的平台下指令
eas build --platform android
eas build --platform ios
編譯的進度可以在官網的dashboard上看到
https://expo.dev/