OStack程序员社区-中国程序员成长平台

标题: ios - Xcode 如何将目标打包为 .framework(而不是 .a 库) [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 08:48
标题: ios - Xcode 如何将目标打包为 .framework(而不是 .a 库)

我有一个通用框架项目,其中包含一个库作为其主要目标,产品下是具有“lib”前缀和 .a 扩展名的库。请看下面的截图:

enter image description here

我正在使用一个包含框架作为其目标的第 3 方项目,并且在 Products 下是具有 .framework 扩展名的框架。请看下面的截图:

enter image description here

在build设置中四处寻找,我可以看到打包和链接下存在差异,其他地方可能存在更多差异。所以,这让我很好奇如何建立一个项目来生成 .framework 而不是 .a 库。

刚刚有人向我指出我正在尝试创建一个 static 框架。有没有人知道可以指导我完成更改目标产品并帮助我理解差异的好教程、博客或书籍?

谢谢。



Best Answer-推荐答案


Xcode 6 和最新的平台 SDK 允许为 iOS 构建(动态)框架。今年的 WWDC 有几场 session 介绍了如何使用框架。

带有 iOS SDK 的以前版本的 Xcode 不直接支持为 iOS 构建框架目标。虽然可以构建静态 iOS 框架,但它不受支持且有些脆弱。使用 Xcode 6 和最新的 iOS SDK,构建框架就像创建一个新的框架目标一样简单。在以前的 Xcode 版本中,它涉及的更多一些,并且 Xcode 本身不会在它应该识别的所有地方识别构建产品。将这些框架用作依赖项等只是在以前版本的 Xcode 中不起作用。

Xcode 5 中的静态框架

使用 Xcode 5 构建 static 框架很像构建静态库。特定于静态框架的重要项目配置设置是:

SDKROOT = iphoneos
ONLY_ACTIVE_ARCH = NO
SUPPORTED_PLATFORMS = iphonesimulator iphoneos
VALID_ARCHS = arm64 armv7 armv7s x86_64 i386
LINK_WITH_STANDARD_LIBRARIES = NO
MACH_O_TYPE = staticlib
WRAPPER_EXTENSION = framework
  1. 从静态库目标开始。确保您的代码可以构建为静态库。
  2. 创建一个新的捆绑目标。
  3. 从构建中删除平台、基础 SDK、包装器扩展、产品名称(如果需要)和 OS X 部署目标设置。
  4. 将上述设置应用于此目标,最好使用构建配置文件。
  5. 将您的代码、资源等添加到目标中。检查目标的构建阶段以确保一切都在您期望的位置。对于 header ,使用 header 构建阶段而不是复制文件构建阶段。
  6. 如果您使用前缀 header ,请确保它为您的目标平台使用正确的 header (即 UIKit.h 而不是 Cocoa.h)

这将构建一个静态框架产品。 Xcode 5 将无法将其用作方案等中的依赖项。框架的文件布局将与动态框架不同。

关于ios - Xcode 如何将目标打包为 .framework(而不是 .a 库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25148583/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4