使用_frameworks!和库 repo 根目录中的 podspec

Posted

技术标签:

【中文标题】使用_frameworks!和库 repo 根目录中的 podspec【英文标题】:use_frameworks! and podspec in the root of a library repo 【发布时间】:2015-05-05 13:04:21 【问题描述】:

我的 ios 项目中有以下依赖项:

source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
platform :ios, '8.0'

pod 'CocoaLumberjack'

# other dependencies here    

pod 'MagicalRecord', :git => 'https://github.com/magicalpanda/MagicalRecord.git', :branch => 'develop'

我目前使用的是最新版本的 CocoaPods (0.37.0)。 pod install 没有给出警告或错误,但是当我尝试构建时,我得到链接器错误:

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_DDLog", referenced from:
      objc-class-ref in MagicalRecord+ErrorHandling.o
      objc-class-ref in NSManagedObject+MagicalDataImport.o
      objc-class-ref in NSManagedObject+MagicalRecord.o
      objc-class-ref in NSManagedObjectContext+MagicalObserving.o
      objc-class-ref in NSManagedObjectContext+MagicalRecord.o
      objc-class-ref in NSManagedObjectContext+MagicalSaves.o
      objc-class-ref in NSObject+MagicalDataImport.o

显然,MagicalRecord 没有看到提供符号的CocoaLumberjack。文档说:

有时您可能想要使用 Pod 的前沿版本、特定修订版或您自己的分叉。如果是这种情况,您可以在 pod 声明中指定。 需要注意的是,这意味着版本必须满足其他 Pod 对 Pod 的任何其他依赖。

但是,并没有说明应该如何满足这些依赖关系。谁能解释一下?一切正常,直到我添加了use_frameworks! 以使用用 Swift 编写的 pod。

【问题讨论】:

对于当今版本的 CocoaPods (1.7.2+) 和 MagicalRecord (2.3.2+) 来说,这是一个过时的问题。 【参考方案1】:

通过在Pods.xcodeproj 中生成的Pods-MagicalRecord 目标中链接CocoaLumberjack.framework,似乎有一些有用的解决方法。这将允许 MagicalRecord 看到 DDLog,因此您应该能够编译。但是,这是一个非常脆弱的解决方案,因为每次运行 pod install 重新生成 Pods 项目时都需要重新链接框架。

source

【讨论】:

以上是关于使用_frameworks!和库 repo 根目录中的 podspec的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pip 从 git 子目录安装?

在 VS2012 中链接源和库目录

Liunx基础_配置yum源仓库

maven repo子目录

是否可以使用webpack单独导入捆绑的webpack和库?

Swift中的相机和库操作