【问题标题】:Podspec with dependencies to Google-Analytics Cocoapods 0.36Podspec 依赖于 Google-Analytics Cocoapods 0.36
【发布时间】:2015-05-15 23:40:43
【问题描述】:

我对我们的私有 podspec 有一个很大的问题,在我们更新到 cocoapods 0.35 之前一切正常。

规范不是很复杂,但取决于GoogleAnalytics-iOS-SDK 这是我们的 pod 规格:

{
  "name": "RKTagManager",
  "version": "0.0.1",
  "summary": "Google TagManager wrapper.",
  "license": {
    "type" : "Closed Source",
    "text" : "This library is as is, not warrenty of any kind."
  }
  "platforms": {
    "ios": "5.1.1"
  },
  "requires_arc" : true,
  "source": {
    "hg": "<snip",
    "revision" : "RKTagManager-0.0.1"
  },
  "dependencies": {
    "GoogleAnalytics-iOS-SDK": []
  },
  "source_files": [
      "Source/RKTagManager/*.{h,m}"
  ]
}

当我尝试验证它时,编译失败并显示以下消息:

Ld /var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/build/Pods.build/Release-iphonesimulator/Pods-RKTagManager.build/Objects-normal/i386/RKTagManager normal i386
    cd /var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/Pods
    export IPHONEOS_DEPLOYMENT_TARGET=5.1.1
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Users/<snip>/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/texbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.2.sdk -L/var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/build/Release-iphonesimulator/Pods -F/var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/build/Release-iphonesimulator/Pods -filelist /var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/build/Pods.build/Release-iphonesimulator/Pods-RKTagManager.build/Objects-normal/i386/RKTagManager.LinkFileList -install_name @rpath/RKTagManager.framework/RKTagManager -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -Xlinker -objc_abi_version -Xlinker 2 -ObjC -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=5.1.1 -framework Foundation -framework GoogleAnalytics_iOS_SDK -framework OIFoundation -single_module -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/build/Pods.build/Release-iphonesimulator/Pods-RKTagManager.build/Objects-normal/i386/RKTagManager_dependency_info.dat -o /var/folders/9r/y21mxssd6rgf6gbrlhqsqv5m0000gp/T/CocoaPods/Lint/build/Pods.build/Release-iphonesimulator/Pods-RKTagManager.build/Objects-normal/i386/RKTagManager
ld: warning: embedded dylibs/frameworks only run on iOS 8 or later
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_TAGManager", referenced from:
      objc-class-ref in RKTagManager.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我只是不明白为什么它再也找不到 TAGManager 调用了。 我使用的是 Xcode 6.2,而 RKTagManager 是适用于 iOS 的。

【问题讨论】:

  • 您好,您能否提供有关 xCode 版本和支持的架构的详细信息。谢谢
  • 我已经添加到信息中了。
  • 我认为问题在于GoogleAnalytics-iOS-SDK 规范链接到谷歌网址,但旧的“图书馆”不再存在。在那里你只能找到他们正在使用的新框架。
  • 我相信您已经添加了一个仅支持 iOS 8 及更高版本的框架,但您的应用程序部署目标是 5.1.1。因此你有这个问题。 6.2 64 位拱也是强制性的。请也检查一下。
  • 没有,GooleAnalytics pod 支持 iOS 5.1.1,默认为 64 位。这不是问题。

标签: ios cocoapods podspec


【解决方案1】:

解决方案似乎是强制 CocoaPods 将 pod 规范构建为库。自从0.36 以来,pod 都是构建一个框架,而不是孤立的框架。

使用--use-libraries 编译为 pod 规范,作为框架的库实例。

你可以这样做:

pod repo push OIPods RKTagManager.podspec.json --use-libraries

【讨论】:

  • 很好的解决方案找到了我的 pod 失败的问题 - 错误 | [MKDKit/MKDUIKit,MKDKit/MKDAnalytics] 返回一个不成功的退出代码。 - 注意 | [MKDKit/MKDUIKit,MKDKit/MKDAnalytics] clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
猜你喜欢
  • 2013-11-02
  • 2014-12-13
  • 2020-01-19
  • 2014-04-22
  • 2014-07-19
  • 2013-10-11
  • 2012-12-15
  • 2015-12-11
  • 1970-01-01
相关资源
最近更新 更多