无效的Bundle,捆绑包包含不允许的嵌套捆绑,包含不允许的文件'Frameworks'

我添加了一个共享框架来共享应用程序和手表扩展之间的代码。 后来我删除了共享框架,因为它导致了很多问题。 我可以在iPhone上构build和运行我的应用程序并观看。 但是,当我提交到应用程序商店,我看到这两个错误:

错误ITMS-90205:“Invalid Bundle。'xxx WatchKit Extension.appex'中的包包含不允许的嵌套包。

错误ITMS-90206:“Invalid Bundle。'xxx WatchKit Extension.appex'中的包包含不允许的文件”Frameworks“。

我已经尝试了所有在stackoverflow( this , this , this )上提到的解决scheme,他们都没有为我工作。 我该如何解决这个错误? 来自苹果的错误消息确实没有给我一个线索,我应该。

我还是不完全明白是什么原因引起的,但是我偶然发现了一个解决了这个问题的答案。

https://github.com/CocoaPods/CocoaPods/issues/4203

具体而言,2015年10月12日由mikehouse发布的post是解决问题的方法。

将以下运行脚本添加到所有您embedded的扩展目标。 在我的情况下,我不得不将运行脚本作为构build阶段添加到我的“今日”扩展程序和我的Apple Watch应用程序扩展中。

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

“ITMS-90206”错误已在本文中解决: validation错误:无效的包。 包中包含不允许的文件'Frameworks'

在WatchKit扩展的Build选项中,需要将设置从Yes更改为No:

 Embedded Content Contains Swift Code: No 

以上不适合我。

Embedded Content Contains Swift Code: NO

没有为我做任何事情。

我使用dynamic框架来体验这个问题。 我的dynamic框架包含其他dynamic框架,使得可以有:

Embedded Content Contains Swift Code: YES

而是让其他dynamic框架将其设置为否。 但是,我不得不设置

Always Embed Swift Standard Libraries: NO

在构build阶段。

将这个设置为YES生成的frameworks文件夹导致上传到ITC失败。

我有一个框架,build立以下的构build设置:

Always Embed Swift Standard Libraries: YES

Allow Non-Modular includes in Framework Modules: YES

所以我改变了两个NO并再次构build框架。

Always Embed Swift Standard Libraries: NO

Allow Non-Modular includes in Framework Modules: NO

我添加了新的框架构build到我的项目,所以它上传到iTunes连接成功。