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

时间:2015-03-10 15:20:52

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

我正在为部署目标早于iOS 8.0的应用开发Today Widget Extension。 在apple Extension Programming Guide中,他们建议使用嵌入式框架在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
  3. (使用arm64架构重复错误2)

    我做错了什么?

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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