1

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

您可以创建一个嵌入式框架来在您的应用扩展程序及其包含的应用程序之间共享代码。

在本指南的最后,他们解释了如何使用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

(使用 arm64 架构重复错误 2)

我做错了什么?

是否有另一种方法可以在应用程序扩展及其包含的应用程序之间共享代码?

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

4

1 回答 1

2

你不能在 iOS 7 上使用嵌入式框架,即使是dlopen.

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

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

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

于 2015-03-10T16:55:07.723 回答