React Native iOS 发布构建链接问题

Posted

技术标签:

【中文标题】React Native iOS 发布构建链接问题【英文标题】:React Native iOS release build linking problem 【发布时间】:2019-09-03 08:35:45 【问题描述】:

我最近将我的项目从 rn 0.57.x 升级到了 0.60.5。现在我无法成功创建发布版本。它以clang: error: linker command failed with exit code 1 失败。失败的原因似乎是使用发布方案时不会构建 pods 项目的静态库。

但是,使用调试方案(或在我的升级前 rn 0.57 项目中使用发布方案)构建会在构建输出文件夹中生成丢失的 .a 文件,并且一切正常。

我尝试了其他帖子中的几个建议修复,但我无法克服错误。我在本地和我的 MS App Center CI 上都有同样的问题。我一直在互联网上挖掘,花了几天时间摆弄 XCode 构建设置,但没有解决方案。

我正在使用:

CocoaPods:1.7.5 X 代码:10.3 10g8

出于对我的 rn 升级技能的好奇,我使用 rn cli init 创建了一个全新的 0.60.5 项目。令我惊讶的是,新的示例项目也没有构建,并且失败并显示相同的消息。 https://bitbucket.org/geekazoid_at/rn60test(初始提交是 0.60.5,提交 30545e3 是 0.61.0-rc.0,两者都以同样的方式失败。)

我坚信,如果我能够构建 rn60test,我也将能够修复我的项目构建问题。随意检查它并针对它运行 xcodebuild 或尝试在 XCode 中构建它(在发布方案中两者都以同样的方式失败)。

我仍然不相信这可能是一个错误,因为问题发生在如此基本的任务中,不可能被忽视。所以我最终来到了这里,因为 Github 建议“问题”应该放在 *** 上。

我不明白为什么发布版本在升级后会突然产生不同的工件(缺少静态库)。这是构建输出的一部分:

ld: warning: directory not found for option '-L/Users/vsts/Library/Developer/Xcode/DerivedData/MyAwesomeProject-fofogldymcvznxdtbzasfqctwyio/Build/Intermediates.noindex/ArchiveIntermediates/OperatorApp/BuildProductsPath/Release-iphoneos/CocoaLumberjack'
... more ld -L warnings...
... more ld -L warnings...
... more ld -L warnings...
ld: warning: directory not found for option '-L/Users/vsts/Library/Developer/Xcode/DerivedData/MyAwesomeProject-fofogldymcvznxdtbzasfqctwyio/Build/Intermediates.noindex/ArchiveIntermediates/OperatorApp/BuildProductsPath/Release-iphoneos/react-native-splash-screen'
ld: warning: directory not found for option '-L/Users/vsts/Library/Developer/Xcode/DerivedData/MyAwesomeProject-fofogldymcvznxdtbzasfqctwyio/Build/Intermediates.noindex/ArchiveIntermediates/OperatorApp/BuildProductsPath/Release-iphoneos/yoga'
ld: warning: directory not found for option '-Fode_modules'
ld: warning: directory not found for option '-Feact-native-background-fetchios'
ld: library not found for -lCocoaLumberjack
clang: error: linker command failed with exit code 1 (use -v to see invocation)

** ARCHIVE FAILED **


The following build commands failed:
    Ld /Users/vsts/Library/Developer/Xcode/DerivedData/MyAwesomeProject-fofogldymcvznxdtbzasfqctwyio/Build/Intermediates.noindex/ArchiveIntermediates/OperatorApp/IntermediateBuildFilesPath/MyAwesomeProject.build/Release-iphoneos/MyAwesomeProject.build/Objects-normal/armv7/MyAwesomeProject normal armv7
    Ld /Users/vsts/Library/Developer/Xcode/DerivedData/MyAwesomeProject-fofogldymcvznxdtbzasfqctwyio/Build/Intermediates.noindex/ArchiveIntermediates/OperatorApp/IntermediateBuildFilesPath/MyAwesomeProject.build/Release-iphoneos/MyAwesomeProject.build/Objects-normal/arm64/MyAwesomeProject normal arm64

【问题讨论】:

你在使用 Pod 吗?确保您已正确链接 react-native-splash-screen 库。尝试删除 DerivedData 并再次运行 我会尽快尝试并回复您,但我不希望它起作用,因为 clean rn init 项目也失败了。它没有第 3 方部门,并且在我的真实项目中找不到 DoubleConversion,而不是 CocoaLumberjack(这似乎是其中一个后台库的间接依赖项)。 是的,使用 CocoaPods。重新链接(当然,我经常清理我的派生数据)没有任何作用,问题仍然存在。 Debug 会吐出所有必需的 pod 静态库及其依赖项,而 release build 不会。 【参考方案1】:

我在这个月更新了我的应用程序(0.57 -> 0.60.5),我使用了这个链接:

https://react-native-community.github.io/upgrade-helper/

回滚您所做的所有更新,然后尝试一下。

更新后,卸载您的应用并重新安装。

【讨论】:

我无法克服这个错误。我想我的一些 pbxproj 设置有问题。我暂时放弃了,刚刚升级到 0.59。还是谢谢你。 这不是真正的解决方案,因此投反对票。

以上是关于React Native iOS 发布构建链接问题的主要内容,如果未能解决你的问题,请参考以下文章

ios发布构建时不显示React Native BareWorkflow图像

安装 react-native-vector-icons 时出现 React Native iOS 构建问题

从 github 打开 react-native 项目时构建失败

React Native,AwesomeProject,react-native run-ios:** 构建失败 **

react-native-pdf iOS 和 Android 构建错误

无法在 iOS 上集成 localytics-react-native