架构 arm64 的未定义符号:Crashlytics (CLSBetaController.o) 中的 CLSBetaController 块调用

Posted

技术标签:

【中文标题】架构 arm64 的未定义符号:Crashlytics (CLSBetaController.o) 中的 CLSBetaController 块调用【英文标题】:Undefined symbols for architecture arm64: CLSBetaController block invoke in Crashlytics(CLSBetaController.o) 【发布时间】:2017-03-08 16:50:00 【问题描述】:

大家好,我今天更新了项目中的 pod 文件,我看到 Crashlytics 从 3.8.3 更新到 3.8.4。安装后,我尝试运行该项目,但看到此错误并且无法构建该项目。

在终端中

Installing Crashlytics 3.8.4 (was 3.8.3)

在 Xcode 问题中

Undefined symbols for architecture arm64:
  "_FABNetworkMaximumRetryCount", referenced from:
      ___51-[CLSBetaController loadUpdateWithCompletionBlock:]_block_invoke in Crashlytics(CLSBetaController.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

【问题讨论】:

【参考方案1】:

打开Podfile源码

移除织物和 Crashlytics 吊舱

pod 'crashlytics' 
pod 'Fabric'

安装 pod

pod install

Fabric 和 crashlytics pod 都将被移除。 再次打开 Podfile 并添加两个 pod,如下所示

pod 'crashlytics' 
pod 'Fabric'

再次安装 pod

pod install

`终于更新了运行脚本

选择项目>>选择目标>>构建短语>>在运行脚本下

"$PODS_ROOT/Fabric/run" YOUR_API_KEY YOUR_BUILD_SECRET

【讨论】:

【参考方案2】:

确保在使用 pod 时打开 .xcworkspace 文件而不是项目 (.xcodeproj) 文件。这应该可以解决链接问题。

【讨论】:

【参考方案3】:

这对我有用。

按照所有说明进行操作:引入 2 个框架,添加到 plist,添加 Run Phrase 脚本,但不要添加:

Fabric.with([Crashlytics.self])

清理并构建项目。这次它应该可以正常工作。没有“_FABNetworkMaximumRetryCount”错误

然后重新添加:

Fabric.with([Crashlytics.self])

到 didFinishLaunchingWithOptions,现在再次构建。出于某种原因,这对我有用。

【讨论】:

以上是关于架构 arm64 的未定义符号:Crashlytics (CLSBetaController.o) 中的 CLSBetaController 块调用的主要内容,如果未能解决你的问题,请参考以下文章

Crashlytics错误:架构arm64的未定义符号

XCode - 架构 armv7 arm64 的未定义符号

架构 arm64 的未定义符号:“cv::String::deallocate()”

删除/重新添加文件,现在我得到架构 arm64 的未定义符号:

Unity AR Foundation Xcode 项目中架构 arm64 的未定义符号

架构 arm64 的未定义符号:Crashlytics (CLSBetaController.o) 中的 CLSBetaController 块调用