同时使用带有框架和静态库的 CocoaPods

Posted

技术标签:

【中文标题】同时使用带有框架和静态库的 CocoaPods【英文标题】:Using CocoaPods with frameworks and static libraries at the same time 【发布时间】:2015-07-18 10:23:44 【问题描述】:

我的项目中有这个 Podfile

platform :ios, '8.0'
use_frameworks!

target 'FunnyApp' do
  pod 'Alamofire', '~> 1.2'
  pod 'SWXMLHash', '~> 1.0'
  pod 'VaultKit', :path => './Frameworks/VaultKit'
  pod 'SessionKit', :path => './Frameworks/SessionKit'
end

只有 VaultKit 是用 Objective-C 编写的静态库。它有这个 podspec:

Pod::Spec.new do |s|
  s.name = 'VaultKit'
  s.version = '0.1'
  s.license = 'MIT'
  s.summary = 'Encryption library'
  s.homepage = 'https://someurl.com'
  s.social_media_url = 'http://twitter.com/greenfish29'
  s.authors =  'Tomas Sliz' => 'greenfish29@email.com' 
  s.source =  :git => 'git@github.org:greenfish29/vaultkit.git' 

  s.ios.deployment_target = '8.0'

  s.public_header_files = 'VaultKit/VaultKit.h'
  s.source_files = "VaultKit/*.h,m" "VaultKit/Models/*.h,m"

  s.requires_arc = true
end

我的项目中也有这个记录的桥接头:

#import <VaultKit/VaultKit.h>

但是当我尝试构建项目时,我得到了这个错误:

FunnyApp-Bridging-Header.h:5:9:找不到“VaultKit.h”文件

可能有什么问题?

【问题讨论】:

【参考方案1】:

Cocoapods 不支持框架和静态库,他们也没有打算这样做。

查看讨论here。

我最终通过使用桥接头为我的项目使用了仅限 Obj-C 的库,因为我不能没有的重要库只有一个 Obj-C 版本。

我认为我们至少可以在未来获得对使用静态库作为依赖的动态框架的支持。

【讨论】:

以上是关于同时使用带有框架和静态库的 CocoaPods的主要内容,如果未能解决你的问题,请参考以下文章

静态库和动态库同时链接

Swift 应用程序:导入静态库的框架时“缺少必需的模块”

构建静态框架和与其他开源库的内部链接的设计方法

带有静态库的私有 pod 以及 swift pod

在动态框架中包含静态库的公共头文件

任何带有 GD 库的 PHP 框架? [关闭]