Crashlytics error: Undefined symbols for architecture arm64

Crashlytics error: Undefined symbols for architecture arm64

在我的应用程序中更新 Fabric Crashlytics 后,我无法再在我的 iOS 设备上 运行 它了。在模拟器上它工作正常。错误是:

Undefined symbols for architecture arm64: "_gzopen", referenced from: -[CLSPackageReportOperation compressFile:] in Crashlytics(CLSPackageReportOperation.o) "_gzwrite", referenced from: ___42-[CLSPackageReportOperation compressFile:]_block_invoke in Crashlytics(CLSPackageReportOperation.o) "_gzclose", referenced from: -[CLSPackageReportOperation compressFile:] in Crashlytics(CLSPackageReportOperation.o) ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

已解决。我删除了 Crashlytics.framework 并重新安装它。

对我来说,解决方案是 Build Phases - Link Binary With Libraries add libc++ and works,在我的遗留项目中。

我 运行 遇到了类似的问题,当时我正在更新 Xcode 5 之前创建的应用程序。

自 Xcode 5 个新项目构建时默认启用模块。在我的旧应用程序中,"Enable Modules" 被设置为 "No"。这就是解决方案。

Crashlytics 和 Fabric 要求您 link 您的目标针对以下各项:

  • Security.framework
  • SystemConfiguration.framework
  • libc++
  • libz

只是 select 你的目标 -> 构建阶段 -> Link 带库的二进制文件 -> 添加缺少的。

希望对您有所帮助。

我通过将 $(inherited) 添加到构建设置中的其他链接器标志来解决这个问题。

在项目(非目标)信息选项卡中将配置文件设置为 none 并再次 运行 pod install

在此处扩展 。 Select“Build Phases”选项卡,单击“Link Binary With Libraries”旁边的“+”并添加 -

  1. Security.framework
  2. SystemConfiguration.framework
  3. StoreKit.framework
  4. libsqlite3.tbd
  5. libz.tbd
  6. libc++.tbd

根据 Google,开发人员应使用 Crashlytics via Firebase。从 Firebase v5.16.0 和 Fabric v1.9.0 (Xcode 10.1) 开始,这对我有用。

我通过添加 $(inherited) $(OTHER_LDFLAGS) -ObjC -l"sqlite3" -l"z" -l[=16= 解决了这个问题] -framework "Crashlytics" -framework "Fabric" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" 到构建设置中的其他链接器标志。

我对这个问题的解决方案是:

对于“发布”也将“仅构建活动架构”更改为“是”。

可以找到设置,选择您的项目>“构建设置”>“目标”(您的目标)>“架构”

在你的项目目标中做,也在你的项目测试目标中做

M1 Mac

在排除的架构中添加“任何 iOS Simulator SDK”-“arm64”在目标、测试和您添加的所有库中。

我通过从其他链接器标志中删除“导致错误的库”解决了这个问题。