我在 CocoaPods 的 Podfile 中多次使用了 use_frameworks!
。我只是想知道为什么我们要使用它?我找不到简单明了的答案。
示例:
platform :ios, '8.0'
use_frameworks!
target "CityWhether" do
pod 'Alamofire'
pod 'SwiftyJSON'
end
我在 CocoaPods 的 Podfile 中多次使用了 use_frameworks!
。我只是想知道为什么我们要使用它?我找不到简单明了的答案。
示例:
platform :ios, '8.0'
use_frameworks!
target "CityWhether" do
pod 'Alamofire'
pod 'SwiftyJSON'
end
use_frameworks!
告诉 CocoaPods 你想使用框架(Frameworks)而不是静态库(Static Libraries),因为 Swift 不支持静态库,所以必须使用框架。它们始终是开源的,并且将像您的应用程序一样被构建。(所以当您运行应用程序时,Xcode有时会编译它,在您清理项目后始终编译。) 框架仅支持 iOS 8 及更高版本,但可以在框架中使用 Swift 和 Objective-C。
如名称所示,它们是静态的。所以当您将它们导入到项目中时,它们已经被编译过了。您可以与他人共享它们而不显示您的代码。请注意,当前静态库不支持 Swift。您将不得不在库中使用 Objective-C。应用程序本身仍然可以使用 Swift 编写。
来源:我的另一个回答 | AddThis.com 博客use_frameworks
或一般的动态框架有什么用途?如果它们是允许的,那么如何绕过限制以不更改已签名的二进制文件? - mfaaniuse_frameworks! :linkage => :static
):https://guides.cocoapods.org/syntax/podfile.html#use_frameworks_bang - Legonaftikuse_frameworks!
命令告诉CocoaPods使用动态库,由于Swift不支持静态库,因此这一命令曾经非常流行,并且在某些情况下没有选择权-但是你通常 不需要 再使用use_frameworks!
了。
自Xcode 9 beta 4和CocoaPods 1.5.0发布以来,现在支持Swift静态库。其主要优点是更快的应用程序启动时间,特别是当您有很多Pods时-如果您有许多dylibs,则iOS 10和11并不是最快的。
CocoaPods 1.5.0于2018年4月初发布,因此您可能需要升级才能使用它:sudo gem install cocoapods
。
我发现有几个Pods与静态库尚不兼容,所以您的效果可能会有所不同。
use_modular_headers!
,以便使它与可能需要但自己没有启用的pod一起正常工作。 - Adrianuse_frameworks!
表示您想使用动态框架,而不是静态库。
Xcode 9.0和CocoaPods 1.5.0已发布,如果您不使用use_frameworks!
,则可以使用Swift和静态库。
use_frameworks!
的一个问题是,Pods / Products中的所有框架都是框架。
这是一篇相关文章:iOS上静态和动态框架的基本概述
Cocoapods use_frameworks
Cocoapods[关于] use_frameworks!
负责二进制类型:
use_frameworks!
存在 - 动态框架
use_frameworks!
不存在 - 静态库
use_frameworks!
在 Pods
项目的对应目标中,Mach-O 类型
[关于] 有所反映。
时间线:
use_frameworks!
,你必须用它来使用Swift pod添加
use_frameworks!
在Podfile中使用意味着我们希望列出的框架被动态安装,而不是作为静态框架。