ios - 在包含部署目标 iOS 7.0 及更早版本的应用程序中使用嵌入式框架

标签 ios xcode ios-frameworks ios8-extension ios-extensions

我正在为部署目标早于 iOS 8.0 的应用程序开发 Today Widget Extension。 在苹果Extension Programming Guide他们建议使用嵌入式框架在应用扩展及其包含的应用之间共享代码。

You can create an embedded framework to share code between your app extension and its containing app.

在本指南的最后,他们解释了如何使用 dlopen 命令将包含应用程序部署到旧版本的 iOS 8.0。

在我添加框架目标后,项目没有成功构建。 它总是因以下错误而失败:

  1. Lipo 错误:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo:无法打开输入文件:PATH_TO_BUILD/armv7/APP_NAME(没有这样的文件或目录)<
  2. Apple Mach-O 链接器错误:ld:嵌入式 dylibs/框架仅在 iOS 8.0 及更高版本(@rpath/FRAMEWORK_NAME)上支持架构 armv7

(错误 2 在 arm64 架构中重复出现)

我做错了什么?

还有其他方法可以在应用程序扩展与其包含的应用程序之间共享代码吗?

如果有人知道dlopen 解决方案,请输入“How to”教程(欢迎提供示例)。

最佳答案

即使使用 dlopen,您也无法在 iOS 7 上使用嵌入式框架。

他们在该页面上解释的(不是很清楚)是,如果您的应用程序在 iOS 8 上使用嵌入式框架并且您想在 iOS 7 上部署该应用程序,您可以在 iOS 8 上没有自动加载框架。相反,您将框架复制到应用程序包中作为构建过程的一部分,然后,仅在 iOS 8 上使用 dlopen 加载来自代码的框架。

在 iOS 7 上,框架将存在于应用程序包中,但 iOS 7 不支持通过任何方式将其加载到应用程序中,包括 dlopen

如果您想在应用程序和扩展程序之间共享代码部署在 iOS 7 上,则不能使用框架来共享代码。您需要在应用目标和扩展目标中包含所有共享代码。

关于ios - 在包含部署目标 iOS 7.0 及更早版本的应用程序中使用嵌入式框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28967532/

相关文章:

ios - ‘project’项目已损坏,由于解析错误无法打开。检查项目文件是否有无效编辑...控制冲突

ios - 无法在 iOS6 中设置 UITableViewCell 的背景颜色?

ios - xcode (ios/objective c) 访问支持文件

objective-c - 从 CFDictionary 获取值

ios - 从嵌入式 Objective C 框架调用 Swift

ios - 在 WatchKit 错误中填充 TableView

iOS更改单元格边框色调颜色

xcode - 如何将 Split View Controller 链接到窗口 Controller ?

Xcode 4 : Framework localization not working

ios - 是否有适用于 iOS 的私有(private)消息 UI(收件箱、发送、撰写)框架?