运行react-native的小问题

448 阅读3分钟

我的react-native是运行在 Mac 环境下的,本身就是 iOS 开发,所以一直都有装 Xcode(15.3)。环境的搭建就是按照官网步骤进行的 https://reactnative.cn/docs/environment-setup, 我的 cocoapod 是早就装好了的,用的是清华源。

  1. 通过 npx react-native@latest init AwesomeProject 创建了项目工程。有一个注意 0.60 版本之后的主项目文件是.xcworkspace,不是.xcodeproj。 所以就 cd ios 目录下,执行 pod install安装,这里就遇到了一个问题,glog这个库远端没有 0.3.5 的版本。下面是报错信息,
[!] Error installing glog
[!] /usr/local/bin/git clone https://github.com/google/glog.git /var/folders/qr/7g9f6jys4yv4gf4x_qrkhw5r0000gn/T/d20240510-5353-kgouxv --template= --single-branch --depth 1 --branch v0.3.5

我找到了 git 上 glog 库的地址https://github.com/google/glog/tree/v0.3.5 ,发现是有 0.3.5 的 tag 的,但是它有一个提示 This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.。看到这里就明白,没有这个版本,所以就想着改这个库的版本,通过关键字搜索,发现这个库的 glog.podspec文件路径是在 node_modules->react-native->third-party-podspecs这个目录下,所以我就把 0.3.5 版本改为了 0.3.4。

Pod::Spec.new do |spec|
  spec.name = 'glog'
  spec.version = '0.3.5'// 这个版本改为 0.3.4
  spec.license = { :type => 'Google', :file => 'COPYING' }
  spec.homepage = 'https://github.com/google/glog'
  spec.summary = 'Google logging module'
  spec.authors = 'Google'

然后再执行 pod install 就可以了。如果 pod 改为清华源的,记得加上 source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'

  1. 遇到的第二个问题是,通过 yarn ios 命令总是编译失败。提示
Failed to build ios project. "xcodebuild" exited with error code '65'. To debug build logs further, consider building your app with Xcode.app, by opening 'AwesomeProject.xcworkspace'.

拿到这个错误,就去谷歌,各种方法都试了,清 yarn 的缓存,清除 node-modules, 重新 pod 甚至 pod update,最后还是不行,后来我发现,再运行 yarn ios 命令后,会有 info 输出

info Found Xcode workspace "AwesomeProject.xcworkspace"
info Found booted iPhone
info Building (using "xcodebuild -workspace AwesomeProject.xcworkspace -configuration Debug -scheme AwesomeProject -destination id=3687269f29ee5e44da2a00978005a579a91ec8d7")

发现,找的虚拟机不对,我用 Xcode 运行项目,默认勾选的虚拟机是 iPhone 15, 我就把所有的虚拟机都清掉,只保留了一个,再运行 yarn ios,发现找的虚拟机还是 iPhone,不知道是不是我没有重启电脑的原因。干脆就直接指定虚拟机运行。 我就找到工程下的 package.json 的文件,找到 scripts 将原来的 "ios": "react-native run-ios" 改为 "ios": "react-native run-ios --simulator='iPhone 15'"。 再次运行 yarn ios,成功编译,并拉起了虚拟机。

没解决这个问题之前,我都是先用 yarn ios 命令运行一下,虽然虚拟机没有拉起来,但是项目已经编译完了,并且端口也已经起来了,然后我再用 Xcode 运行 ios 项目,也是可以进行动态调试的,其实终端运行和 Xcode 运行都是一样的,最终的编译文件都是同一个。

这是在学习react-native时遇到的两个小问题,希望对你有所帮助。