iOS 静态框架和静态库

Posted

技术标签:

【中文标题】iOS 静态框架和静态库【英文标题】:iOS static framework and static library 【发布时间】:2012-08-20 16:14:49 【问题描述】:

这个link讨论了如何创建ios静态框架,他们说

使用静态库,其他一切(包括 头文件)您必须单独分发。

其实我发现使用static lib和framework没有什么区别,你可以看看Admob SDK (https://developers.google.com/mobile-ads-sdk/docs/),他们问的只是拉取XCode项目中的所有文件,所以我真的不明白为什么我们需要在普通的静态库上使用框架,还是我遗漏了什么?

【问题讨论】:

您应该需要.a 文件加上.h 文件,以及任何声音或图像文件等。 一个框架通常将头文件和.m文件组合在一个包中,不像一个只有源(.m)文件的库,你必须将头文件单独添加到你的项目中。 您不允许在 Xcode 3 中包含框架 - 只是库。在一些 Xcode 4 开始支持它们。 @DavidH 这是错误的。 iOS 上始终禁止使用动态库的自定义框架(非越狱)。始终支持使用静态库的自定义框架(支持,我的意思是在 Xcode 3 上使用它们已经很好了)。 @Howard 我们并不“需要”使用它们,这主要是为了方便。与添加库和一堆头文件相比,添加框架要方便得多。 【参考方案1】:

基本上,框架是静态库(例如,一个用于 i386,一个用于 ARM)和头文件的集合。此外,框架也是一个具有非常明确的结构的特殊文件夹。

我不确定您所说的“只需在 Xcode 中添加文件夹”是什么意思... 如果您的意思是添加一个包含所有源代码的文件夹或一个包含静态库(包括头文件)的文件夹,那么您是对的,并且(通常)没有太大的区别(取决于要包含的库)。

使用框架主要是为了可用性。添加一个框架,也就是添加一个工件,比添加一堆文件更不容易出错。例如,不可能意外遗漏一个头文件。

【讨论】:

以上是关于iOS 静态框架和静态库的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 的动态框架中包含静态库

胖静态库和框架节省?

同时使用带有框架和静态库的 CocoaPods

如何打开框架中包含的视图控制器作为 iOS 的静态库?

如何从iOS中的静态库构建胖库时从libWebRTC.a静态库中删除x86_64 architechture?

在动态框架中包含静态库的公共头文件