我多次在CocoaPods use_frameworks
中使用Podfile
。我只是想知道为什么要使用它?我无法直截了当地回答它。
示例:
platform :ios, '8.0'
use_frameworks!
target "CityWhether" do
pod 'Alamofire'
pod 'SwiftyJSON'
end
答案 0 :(得分:84)
use_frameworks
告诉CocoaPods你想使用Frameworks而不是Static Libraries。由于Swift不支持静态库,因此必须使用框架。
在另一个答案中,我解释了静态库和框架之间的区别:
Cocoa Touch Frameworks
它们始终是开源的,并且将像您的应用一样构建。 (所以 当您运行应用程序时,Xcode有时会编译它 清理项目后。)框架仅支持iOS 8和 更新,但您可以在框架中使用Swift和Objective-C。
Cocoa Touch静态库
顾名思义,它们是静态的。所以他们已经编译好了 您将它们导入您的项目。您可以与他人分享 没有向他们展示你的代码。请注意,目前静态库 不支持Swift。您将不得不在内部使用Objective-C 图书馆。应用程序本身仍然可以用Swift编写。
答案 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)
添加
Podfile中的use_frameworks!
表示我们希望将列出的框架动态安装,而不是静态框架。
答案 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!
负责二进制类型:
use_frameworks!
-dynamic framework
use_frameworks!
-static library
use_frameworks!
在Mach-O Type
项目的相应目标中的Pods
[About]中有所体现。
时间轴:
use_frameworks!
,您必须在Swift pod中使用它答案 5 :(得分:-23)
use_frameworks!
表明它将支持iOS 8.0及更高版本。它并不支持所有cocoapods库的iOS 7.0。
如果您希望项目支持iOS 7.0及更高版本,则必须将其删除。
所以改变是打击
platform :ios, '7.0'
target "CityWhether" do
end