Swift 2/iOS 9 - 找不到libz.dylib

Dan*_* K. 52 google-analytics swift google-analytics-sdk ios9 swift2

我在我的新Swift 2.0项目中使用谷歌的一些外部代码,在早期版本中需要"libz.dylib".更新到新的XCode /新SDK后.

XCode现在无法导入libz.dylib并抛出一些错误

架构i386的未定义符号:"_ deflate",引用自:+ [GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:]在libGoogleAnalyticsServices.a(GAICompressionUtil.o)"_ deflateEnd"中,引自:+ [GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel: mode:]在libGoogleAnalyticsServices.a(GAICompressionUtil.o)" deflateInit2 "中,引自:+ [GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:]在libGoogleAnalyticsServices.a(GAICompressionUtil.o)"_inflate"中,引自:+ [GAICompressionUtil在libGoogleAnalyticsServices.a(GAICompressionUtil.o)"_inflateEnd"中的gai_dataByInflatingBytes:length:isRawData:],引自:+ [GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:]在libGoogleAnalyticsServices.a(GAICompressionUtil.o)" inflateInit2 "中,引用自:+ libGoogleAnalyticsServices.a中的[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:](GAICompressionUtil.o)ld:symbol(s)找不到架构i386 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

在查看"构建阶段"设置中的可用包时,我可以找到"libz.tbd",它似乎是libz.dylib的替代品.导入此lib时,链接器错误保持不变,但我收到此额外警告:

警告:正在跳过文件'/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/usr/lib/libz.tbd'(意外文件类型'text'in框架和库构建阶段)

知道该怎么办?

小智 113

我有同样的问题.我找到了某种方式.

  1. 转到Build Phases> Link Binary with Librairies> +> Add other
  2. 进入文件选择窗口后,执行"CMD"+ Shift + G(转到文件夹)并键入/ usr/lib /
  3. 从/ usr/lib你可以添加:libz.dylib等等...
  4. 编译并享受乐趣

  • 这已经过时了.它现在应该是libz.tbd. (39认同)
  • @BK也许它应该仍然不适用于Yosemite和Xcode 7.1.1 with .tbd - 使用上述解决方案可以在模拟器和设备上工作 (5认同)

hel*_*tan 82

libz.dylib现在位于Apple开发人员论坛的 libz.tbd 引用中:

对于那些好奇的人来说,.tbd文件是新的"基于文本的存根库",它提供了用于SDK的存根库的更紧凑版本,并有助于显着减少其下载大小.

希望很快就能有更多的文档.

编辑

为了清楚起见,我将引用Guitz的回答来更新内容

  1. 转到Build Phases> Link Binary with Librairies> +> Add other
  2. 进入文件选择窗口后,执行"CMD"+ Shift + G(转到文件夹)并键入/ usr/lib /
  3. 从/ user/lib你可以添加:libz.tbd等等...
  4. 编译并享受乐趣

  • 这应该是第一个答案! (3认同)
  • 在较旧的iOS版本上使用它是否安全?在你提供的链接上,他们说"删除对.tbd的所有引用",那么,我们应该使用.tbd吗? (2认同)

小智 8

从带有二进制文件的链接中删除所有动态库(dylib).它会自己找到这些库.