react-native 升級(由0.59.10升級到0.61.5)

官網上的升級方法有兩種

1,自動升級(適用於版本差異比較小的,比如從0.59.7升級到0.59.8)

2,手動升級(適用於版本差異比較大的,比如從0.59.10升級到0.61.5)

着重講下如何手動升級

1,知道升級版本間的差異版本差異比較,輸入版本號,得到版本之間的差異信息

2,手動修改非Android和ios目錄文件,這兩個目錄下面會單獨升級修改

3,Android升級

  • 參照版本差異的比較結果,對Android目錄進行一個文件一個文件的比較修改
  • 刪除根目錄下的node_modules,重新npm install,然後運行react-native run-android

4,Android升級中出現的問題

  • 如果你是一個足夠細心並好運的人,一次就能成功,如果一次不能成功,請不要灰心,使用必應國際版,這個網站大都能解決你的問題,
  • 我升級的時候出現了一個好像是關於分包的問題,具體什麼的我記得不太清楚,解決辦法:編輯android/app/build.gradle,文件,添加如下圖的代碼

至此,Android項目升級已經完成

4,IOS升級

  • 請參照版本差異修改ios/Podfile文件,全部替換也沒有關係
  • 刪除IOS目錄下的build和Pods目錄,運行pod install ,這個過程可能會比較慢,可以參照react native 官網解決這個問題,也可以多試幾次
  •  返回到上一級目錄,運行react-native run-ios 

5,IOS升級中出現的問題

  • 比較常見的是出現“library not found for -lXXX”問題,解決辦法:用Xcode打開項目的ios文件夾,如下圖所示

操作紅色框中的根據提示的錯誤,刪除對應的選項,

  • Metro bundler框並沒有隨着react-native run-ios命令彈出,但是編譯成功了,這時有兩種解決辦法
  1. 新開一個窗口,運行npm start(比較笨)
  2. 如下圖所示

如果沒有這個Start Packager 選項請新建一個,並在下圖的紅色框中輸入下面的代碼

export RCT_METRO_PORT="${RCT_METRO_PORT:=8081}"
echo "export RCT_METRO_PORT=${RCT_METRO_PORT}" > "${SRCROOT}/../node_modules/react-native/scripts/.packager.env"
if [ -z "${RCT_NO_LAUNCH_PACKAGER+xxx}" ] ; then
  if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then
    if ! curl -s "http://localhost:${RCT_METRO_PORT}/status" | grep -q "packager-status:running" ; then
      echo "Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly"
      exit 2
    fi
  else
    open "$SRCROOT/../node_modules/react-native/scripts/launchPackager.command" || echo "Can't start packager automatically"
  fi
fi

重新運行react-native run-ios,你會發現,問題解決了,至此IOS升級完成

ps:react-native 0.60.X版本在npm install的時候已經進行link,如果你要升級的版本爲0.60.X版本以及以上版本,請在升級之前先react-native unlink,如果不unlink也是可以的,因爲你在運行react-native run-ios時,會提示你unlink的 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章