Xcode iOS捆绑包包含不允许的文件“ Frameworks”

时间:2018-08-02 07:48:54

标签: ios swift xcode app-store

我正在尝试发布iOS swift应用。我使用Xcode 9.4.1。该应用程序包含一个共享扩展名,可以通过HTTP上传文件。共享扩展名使用SwiftHTTP。应用验证失败,出现以下错误:

Invalid Bundle. The bundle at 'FooBar.app/PlugIns/FileUploadextension.appex' contains disallowed nested bundles.
An unknown error occurred.

Invalid Bundle. The bundle at 'FooBar.app/PlugIns/FileUploadextension.appex' contains disallowed file 'Frameworks'.
An unknown error occurred.

我检查了关于错误消息的StackOverfllow上的其他答案。

我禁用了扩展的快速库的嵌入:

enter image description here

已为主要应用启用嵌入:

enter image description here

该扩展有一个框架复制步骤:

enter image description here

我尝试将this script添加到扩展构建阶段:

cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then
rm -fr Frameworks
fi

使用此脚本后,应用程序通过了验证,但扩展名不起作用。它失败并显示:

Hub connection error Error Domain=NSCocoaErrorDomain
Code=4097 "connection to service named
xxx.FooBar.FileUploadextension"
UserInfo={NSDebugDescription=connection to service named

当我在Finder中打开我的FileUploadextension.appex时,我有一个包含SwiftHTTP.framework的Frameworks目录。如何解决该问题以通过验证并使扩展正常工作?

1 个答案:

答案 0 :(得分:1)

所以我的问题是应用扩展(共享扩展)需要一个库。 您的扩展程序无法嵌入库,因此您需要做的是将库嵌入主应用程序,然后从扩展程序链接到它。

如果您使用的是迦太基,那么我假设您已将迦太基复制脚本添加为运行脚本。

enter image description here

您只能在主应用程序中拥有此功能,而对于扩展程序则没有。扩展名使用的所有库都必须在输入文件中列出。

然后在您的扩展程序中,只需将框架添加为链接的二进制文件

enter image description here

也从扩展程序中删除“复制框架”步骤。