…处的文件包包含不允许的文件“ Frameworks”

时间:2020-02-04 08:34:45

标签: ios xcode frameworks app-store

我正尝试部署包装在框架中的.dylib库,并且遇到以下问题:'错误ITMS-90206:“无效的捆绑包。X.app/ Frameworks / PoemsRecommender.framework的捆绑包”包含不允许的文件'Frameworks'。”

似乎在框架中嵌套了一个框架: shared

我尝试过的事情:

  • 在“运行脚本”阶段删除“ Frameworks”文件夹(它实际上有助于提交,但是应用程序崩溃,因为它找不到Frameworks文件夹中的dylib)
  • 在“嵌入式​​框架”中将“框架”更改为“共享框架”
  • 禁用“始终嵌入Swift ..”

1 个答案:

答案 0 :(得分:2)

原因

错误消息表明您正在尝试打包内部嵌入了自己的框架的框架。

传统框架嵌入目前不支持此功能

不幸的是,修复程序是将所有框架分别链接到您的主要目标中。

我怎么知道?

看到此错误X.app/Frameworks/PoemsRecommender.framework contains disallowed file 'Frameworks'."

Apple明确表示不允许使用嵌入“ Frameworks”文件夹的框架。有一个很棒的讨论here,其中有很多细节。

推荐的解决方案

分别打包您的框架并手动链接它们。苹果有良好的准则here

不推荐,但可以实现您的目标

如果必须使用单个框架,则涉及很多工作。实际上,您想创建一个将掩盖所有基础框架的Umbrella框架。如果您决定在应用程序的其他部分中链接那些子框架,则可能会变得混乱。由于您的问题不清楚细节,因此我无法确定这是否会影响您。

有许多resources可以指导您完成繁琐的过程。

有效地,这些步骤涉及创建一个聚合目标,该目标可以使用构建脚本在运行时绑定所有框架。

我过去曾经这样做过,在此过程中我们遇到了很多问题,因此我不建议您使用这种方法。过去,我们有一个带有白色标签的SDK,该SDK由多个内部框架组成,这些内部框架由一个聚合目标绑定。新的团队成员常常很难维护和理解。最终,我们只是迁移到了多个框架。

我认为苹果有自己的工具来支持他们的工作方式,但可惜的是,我们的农民无法使用它。