CocoaPods 是不是使用_frameworks!与 iOS 7 一起工作?

Posted

技术标签:

【中文标题】CocoaPods 是不是使用_frameworks!与 iOS 7 一起工作?【英文标题】:Does CocoaPod use_frameworks! work with iOS7?CocoaPods 是否使用_frameworks!与 iOS 7 一起工作? 【发布时间】:2015-04-19 10:14:24 【问题描述】:

我想使用这样的 Podfile:

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

这适用于 iOS 7 吗?我以为框架只在 iOS 8 中可用?

【问题讨论】:

【参考方案1】:

不,它没有。 use_frameworks! 通过在新的 dynamic frameworks 中构建您的代码来启用 Swift 支持。动态框架仅支持 iOS 8。不幸的是,由于您不能在静态库中使用 Swift(以前 CocoaPods 捆绑库的方式),因此这是捆绑 Swift 文件的唯一方法。

【讨论】:

【参考方案2】:

你不能使用:

use_frameworks!

使用 iOS7。

【讨论】:

所以,明确一点,这意味着你不能使用 CocoaPods 在 Swift 中构建一个支持 iOS 7+ 的项目,对吧?【参考方案3】:

更新:事实证明,您实际上可以在 iOS 7 上部署动态框架。不过,可能不是通过 Cocoapods。说明(谢谢,@user102008!):Deploying a Containing App to Older Versions of iOS。此更新并没有真正回答原始问题,但添加它是为了根据新信息澄清我的旧答案。


一个注释,我相信它足够重要,可以作为答案。 iOS 7 实际上支持动态框架,您可以在 iOS 7 设备上使用动态框架运行代码。 但是 iOS 7 不支持公平竞争加密的第三方框架。因此,如果您尝试使用动态框架向 iTunesConnect 提交适用于 iOS7 的应用程序,它将被拒绝 (one prooflink)。

我认为这很重要,因为它可能看起来有效,但实际上并没有。如果你忽略警告,你可能会太晚遇到问题,因为一半的项目已经在 Swift 中了。

我们在开始开发自己的 pod 时遇到了这个问题。该项目在 iOS 7 上编译并运行良好。幸好我们进一步研究了这个问题。

【讨论】:

"如果您尝试使用动态框架向 iTunesConnect 提交适用于 iOS7 的应用程序,它将被拒绝" 提交到针对 iOS 7 的应用商店的应用程序不能具有动态框架是不正确的。是的,如果应用程序在构建时链接到动态框架,它将被拒绝。但是Apple provides instructions 仅在 iOS 8+ 上运行时如何在构建时不链接它,但在运行时使用 dlopen 动态链接它。 @user102008 谢谢!我不知道。很高兴知道。我更新了答案以包含此信息。

以上是关于CocoaPods 是不是使用_frameworks!与 iOS 7 一起工作?的主要内容,如果未能解决你的问题,请参考以下文章

RestKit 编译失败,cocoapods use_frameworks for swift

为啥我们使用 use_frameworks!在 CocoaPods 中?

CocoaPods使用UMengSocial时报错

CocoaPods的使用 安装

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

CocoaPods 安装旧版框架