为什么我们在CocoaPods中使用use_frameworks?

时间:2016-12-18 16:09:33

标签: ios cocoapods

我多次在CocoaPods use_frameworks中使用Podfile。我只是想知道为什么要使用它?我无法直截了当地回答它。

示例:

platform :ios, '8.0'
use_frameworks!

target "CityWhether" do
    pod 'Alamofire'
    pod 'SwiftyJSON'
end

6 个答案:

答案 0 :(得分:84)

use_frameworks告诉CocoaPods你想使用Frameworks而不是Static Libraries。由于Swift不支持静态库,因此必须使用框架。

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

  

Cocoa Touch Frameworks

     

它们始终是开源的,并且将像您的应用一样构建。 (所以   当您运行应用程序时,Xcode有时会编译它   清理项目后。)框架仅支持iOS 8和   更新,但您可以在框架中使用Swift和Objective-C。

     

Cocoa Touch静态库

     

顾名思义,它们是静态的。所以他们已经编译好了   您将它们导入您的项目。您可以与他人分享   没有向他们展示你的代码。请注意,目前静态库   不支持Swift。您将不得不在内部使用Objective-C   图书馆。应用程序本身仍然可以用Swift编写。

来源:My other answer | AddThis.com Blog

答案 1 :(得分:50)

您不必“use_frameworks!”了。

从Xcode 9 beta 4和CocoaPods 1.5.0开始,现在支持swift静态库。主要优点是更快的应用程序启动时间,特别是如果你有很多pod - 当你有很多dylib时,iOS 10和11并不是最快的。

CocoaPods 1.5.0 was released in early April 2018,因此您可能需要升级才能获得它:sudo gem install cocoapods

我发现有几个pod在静态库中无法正常工作,所以你的里程数会有所不同。

答案 2 :(得分:0)

添加

  

use_frameworks!

Podfile中的

表示我们希望将列出的框架动态安装,而不是静态框架。

答案 3 :(得分:0)

use_frameworks!声明您要使用动态框架,而不是静态库

发布了Xcode 9.0和CocoaPods 1.5.0。如果不使用use_frameworks,则可以快速使用静态库。

use_frameworks的一项性能是Pods / Products中的所有框架都是框架。

这是相关文章:Basic overview of static and dynamic frameworks on ios

答案 4 :(得分:0)

Cocoapod的[About] use_frameworks!负责二进制类型:

  • 如果{strong}出现use_frameworks! -dynamic framework
  • 如果{strong>未显示use_frameworks! -static library

use_frameworks!Mach-O Type项目的相应目标中的Pods [About]中有所体现。

时间轴:

  1. CocoaPods 0.36引入了use_frameworks!,您必须在Swift pod中使用它
  2. CocoaPods 1.5.0和Xcode 9允许您选择

Vocabulary

答案 5 :(得分:-23)

podfile中的

use_frameworks!表明它将支持iOS 8.0及更高版本。它并不支持所有cocoapods库的iOS 7.0。

如果您希望项目支持iOS 7.0及更高版本,则必须将其删除。

所以改变是打击

platform :ios, '7.0' target "CityWhether" do end