Crashlytics错误:未定义的符号,适用于arm64架构

25
在我更新了应用程序中的Fabric Crashlytics之后,我无法在我的iOS设备上运行它。 在模拟器上它可以正常工作。 错误是:
未定义的符号体系结构arm64: “_gzopen”,来自: -[CLSPackageReportOperation compressFile:] in Crashlytics(CLSPackageReportOperation.o) “_gzwrite”,来自: ___42-[CLSPackageReportOperation compressFile:]_block_invoke in Crashlytics(CLSPackageReportOperation.o) “_gzclose”,来自: -[CLSPackageReportOperation compressFile:] in Crashlytics(CLSPackageReportOperation.o) ld: 符号(s)未找到体系结构arm64 clang: 错误:链接器命令失败,退出代码1(使用-v查看调用)

enter image description here


1
看起来你需要链接到 zlib - Adam
2
添加 libc++ 就可以了。 - ChintaN -Maddy- Ramani
我已经在这篇帖子上回答了那个问题:https://dev59.com/k14c5IYBdhLWcg3wQoc5#45569861 - Rodrigo Soldi Lopes
11个回答

50

Crashlytics 和 Fabric 要求您将目标链接到以下框架:

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

只需选择您的目标 -> 构建阶段 -> 链接二进制文件与库 -> 添加缺少的库即可。

希望这有所帮助。


这是有效的。确保你还将其添加到任何测试目标中!那就是我的问题。 - Tori Huang

20

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


16

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

自从 Xcode 5 开始,默认情况下使用模块构建新项目。在我的旧应用程序中,“启用模块”设置为“否”。所以这就是解决方案。

在 Build Settings 中将 Enable Modules(C 和 Objective-C)设置为 YES


6
对我来说,解决方案是在Build Phases下的"Link Binary With Libraries"中添加libc++,这在我的旧项目中起作用了。

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

4

我的解决方法如下:

将“仅构建活动架构”也设置为 “是” ,同时针对“发布”(Release)模式。

设置可以在您的项目中找到,选择“构建设置”(Build Settings),然后选择“目标”(Targets)(您的目标)> “架构”(Architectures)

enter image description here

在您的项目目标和项目测试目标都要进行此操作

enter image description here


3
我通过在构建设置中的其他链接器标志中添加$(inherited) $(OTHER_LDFLAGS) -ObjC -l"sqlite3" -l"z" -l"c++" -framework "Crashlytics" -framework "Fabric" -framework "Security" -framework "SystemConfiguration" -framework "UIKit"来解决这个问题。"$(inherited)" 表示继承自父级项目的所有链接器标志。

3

在此扩展Ricardo的答案。选择“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的建议,开发人员应通过Firebase使用Crashlytics。这在Firebase v5.16.0和Fabric v1.9.0(Xcode 10.1)中对我有效。


1

M1 Mac

在被排除的架构中添加 "Any iOS Simulator SDK" - "arm64" 到目标、测试和所有你添加的库中。

enter image description here


0
在项目(而非目标)信息选项卡中将配置文件设置为“none”,然后再次运行pod install

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接