相关疑难解决方法(0)

使用Cocoapods构建静态库时防止出现重复符号

虽然我已经看到很多关于Cocoapods和静态库的问题,但大多数人似乎都认为你最终会拥有一个带有静态库和最终目标应用程序的工作区.

在我的场景中,我正在构建一个静态库.更具体地说,我正在攻击MyLib.framework供用户使用.我真的很想管理MyLib.framework与Cocoapods的依赖关系,但是当我的库的消费者使用Cocoapods 时,它会产生很多痛点.

例如,我的库有一个AFNetworking依赖项,我用Cocoapods管理它.当我构建我的库时,它链接在libPods.a中,其中包括AFNetworking,以及一些"虚拟"文件/对象.如果我的框架的用户也使用Cocoapods来构建他们的应用程序,他们会看到如下内容:

duplicate symbol _OBJC_METACLASS_$_PodsDummy_Pods in:
    /Users/erikkerber/Dropbox/Projects/MillMain/MyLib.framework/BuddySDK(Pods-dummy.o)
    /Users/erikkerber/Library/Developer/Xcode/DerivedData/MillMain-fngfqhlslygksgcfuciznkpqfrbr/Build/Products/Debug-iphonesimulator/libPods.a(Pods-dummy.o)
duplicate symbol _OBJC_CLASS_$_PodsDummy_Pods in:
    /Users/erikkerber/Dropbox/Projects/MillMain/MyLib.framework/BuddySDK(Pods-dummy.o)
    /Users/erikkerber/Library/Developer/Xcode/DerivedData/MillMain-fngfqhlslygksgcfuciznkpqfrbr/Build/Products/Debug-iphonesimulator/libPods.a(Pods-dummy.o)
ld: 2 duplicate symbols for architecture i386
Run Code Online (Sandbox Code Playgroud)

我想如果他们要添加一个AFNetworking依赖项,他们也会得到与AFNetworking相关的重复符号.

我计划最终使用Cocoapods分发MyLib,但我也希望能够分发MyLib.framework本身.

有没有办法在我的库中使用Cocoapods同时使Cocoapods对任何潜在用户都安全?

objective-c static-libraries ios cocoapods

21
推荐指数
3
解决办法
1万
查看次数

架构的重复符号x86_64从CocoaPods添加pod时

我正在尝试将Google Analytics用于我的应用.

但是在通过CocoaPod添加后立即出现此错误:

在此输入图像描述

以前我的pod中有GoogleMaps和GCM.

现在我的Pod看起来像这样:

platform :ios, '8.0'

pod 'Google/Analytics'
pod 'Google/CloudMessaging'
pod 'GoogleMaps'
Run Code Online (Sandbox Code Playgroud)

我该如何解决此错误:

*编辑

这解决了我的问题:

如果我运行现有项目,X-Code 7那么我没有得到错误.

但我想让它运行Xcode 6.4所以我添加旧版本,GA并且可以正常运行X-Code 6.4.

我已经手动添加了较旧sdk但是如果有人想要添加它通过Cocoa-Pod那么这是这样做的方式:

  pod 'Google/Analytics'
  pod 'GoogleAnalytics', '3.13.0'
Run Code Online (Sandbox Code Playgroud)

google-analytics objective-c linker-errors ios xcode6

10
推荐指数
1
解决办法
3393
查看次数