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的 

 

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