为什么我们要在 CocoaPods 中使用 use_Framework! ?

我曾多次在可可豆 Podfile中使用 use_frameworks!。我只是好奇我们为什么要用它?我无法得到直接的答案。

例如:

platform :ios, '8.0'
use_frameworks!


target "CityWhether" do
pod 'Alamofire'
pod 'SwiftyJSON'
end
90095 次浏览

use_frameworks!告诉 CocoaPods 您希望使用框架而不是静态库。由于 Swift 不支持静态库,所以必须使用框架。


在另一个答案中,我解释了静态库和框架之间的区别:

可可触摸框架

它们始终是开源的,并将像你的应用程序一样被构建 当你运行你的应用程序时,Xcode 有时会编译它 框架只支持 iOS8和 但是你可以在框架中使用 Swift 和 Objective-C。

Cocoa Touch 静态库

顾名思义,它们是静态的。因此,当 您可以将它们导入到您的项目中,您可以与其他人共享它们 请注意,目前静态库 不支持 Swift。您必须在 应用程序本身仍然可以用 Swift 编写。

来源: 我的另一个答案 | AddThis.com 博客

use_frameworks!告诉可可豆荚使用动态库,并且在某个时候非常流行,特别是由于迅速不支持静态库,这意味着没有选择-然而你经常需要 use_frameworks!了。

在 Xcode 9 beta 4和 CocoaPods 1.5.0中,现在支持快速静态库。主要的优势是更快的应用程序启动时间,特别是如果你有很多吊舱-iOS10和11不是最快的时候,你有很多 dylibs。

CocoaPods 1.5.0发布于2018年4月初 ,因此您可能需要升级才能获得它: sudo gem install cocoapods

但是,我发现有几个 pods 还不能正确地使用静态库,因此您的使用范围可能会有所不同。

添加

Use _ Framework!

在 Podfile,这意味着我们希望列出的框架是动态安装的,而不是静态框架。

use_frameworks!声明希望使用 动态框架而不是 静态库

随着 Xcode 9.0和 CocoaPods 1.5.0的发布,如果您不使用 use_frameworks!,那么您可以使用具有 Swift 的静态库。

use_frameworks!的一个问题是,Pods/Products 中的所有框架都是框架。

这里有一篇相关的文章: Ios 静态和动态框架的基本概述

Cocoapods use _ Framework

Cocoapods< sup > [ About ] use_frameworks!负责二进制的类型:

  • 如果 use_frameworks!现在-dynamic framework
  • 如果 use_frameworks!不在场-static library

use_frameworks!Mach-O Type< sup > [ About ] 中反映在 Pods项目的相应目标中。

时间表:

  1. CocoaPods 0.36 引入了 use_frameworks!,你必须用它来做 Swift pod
  2. CocoaPods 1.5.0 和 Xcode 9允许您进行选择

[词汇]