使用Xcode 11构建旧版本的React-Native应用程序

时间:2020-04-23 09:13:21

标签: ios xcode react-native

我刚刚开始研究一个已经存在的React-Native应用程序,该应用程序需要很小的更新,但是自2019年10月以来就没有更新过。

要开始更新它,我需要做的第一件事就是构建应用程序。那是我找不到办法的地方。

目前,我正在尝试仅在iOS而不是Android上构建应用。

我正在使用的所有当前工具集版本中的第一个是:

React-Native version: 0.53.3
Xcode version: 11.4.1
iOS SDK: 13.4
Node version: 8.16.6
NPM version: 6.14.1

起初我在使用第三方工具时遇到了问题,但是我设法通过手动将其安装在node-modules/react-native folder中来进行修复。

现在我遇到有关Xcode的错误,找不到应用程序正在使用的模块的标题 例如, 找不到React/RCTViewManager.h个文件 或者,类似地,RNGoogleSignIn模块中的GoogleSignIn.h标头

我认为这只是在Xcode中导入库的错误,因为作为测试,我创建了一个新的react-native“测试应用程序”,具有相同的react-native和node确切版本,然后我安装了核心在原始应用程序上执行更新所需的依赖项,我设法毫无问题地进行了构建。

我还测试了使用Xcode 9在装有macOS 10.14的旧Mac上构建应用程序的过程,但是我遇到了不同的错误,总是与导入模块头有关。 这是“旧Mac”的工具包版本:

React-Native version: 0.53.3
Xcode version: 9.4.1
iOS SDK: 11.3
Node version: 8.16.6
NPM version: 6.14.1

在线搜索我知道我遇到的一些问题(例如第三方react-native手动安装)已在react-native更新中修复,但是我对这项技术不够专业,无法确定我可以处理更新过程而不会引入错误。我宁愿仅使该版本暂时运行并在以后面对更新过程。

您对我为成功构建该应用程序能做什么有什么建议?

1 个答案:

答案 0 :(得分:0)

如果有人遇到类似问题:解决方案非常简单。

  1. 请确保您使用的是package main import ( "flag" "fmt" ) type stringPtrFlag struct { ptr **string } func (f stringPtrFlag) String() string { if *f.ptr == nil { return "" } return **f.ptr } func (f stringPtrFlag) Set(s string) error { *f.ptr = &s return nil } var filename *string func init() { flag.Var(stringPtrFlag{&filename}, "filename", "the filename") } func main() { flag.Parse() if filename == nil { fmt.Println("--filename not set") } else { fmt.Printf("--filename set to %q\n", *filename) } } 文件夹中的.xcworkspace文件,而不是iOS中的文件。这用于自动(正确地)在Xcode中加载Pods依赖项,而无需手动链接它们。
  2. 请确保使用正确版本的Cocoapods正确安装了依赖项。我们必须使用一个旧版本(1.5.x),该版本会自动下载一些pod依赖项。我们的错误归因于Facebook SDK。较新版本的cocoapods没有下载,而1.5.x版本会下载。