【问题标题】:How to fix Application Loader Error: Invalid Bundle. The bundle ... contains disallowed file 'Frameworks'如何修复应用程序加载器错误:无效的捆绑包。捆绑包...包含不允许的文件“框架”
【发布时间】:2016-12-30 00:26:48
【问题描述】:

我有一个包含三个 Swift 自定义框架的 Swift 项目。该应用程序构建并成功运行,但是当我尝试使用 Application Loader 上传到 iTunes Connect 时,我收到所有三个框架的以下错误:

错误 ITMS-90206:“捆绑包无效。'XXX.app/Frameworks/YYY.framework' 处的捆绑包包含不允许的文件 'Frameworks'。”

正如this SO answer 中所讨论的,我在框架中将“嵌入的内容包含 Swift 代码”设置为 NO,在 App 中设置为 YES,但此错误仍然存​​在。

这三个框架都是我自己的(我正在认真考虑重新设计项目以完全避免使用框架,但这是我现在想避免的苦差事)。

我没有使用 cocoapods。

关于如何解决此错误的任何想法?

【问题讨论】:

标签: ios swift xcode


【解决方案1】:

the Xcode 8.3 Release note 的 (SE-0133) 中有关于EMBEDDED_CONTENT_CONTAINS_SWIFT 设置的说明:

新的构建设置 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 取代了已弃用的 EMBEDDED_CONTENT_CONTAINS_SWIFT 设置。这个新设置表明 Xcode 应该始终将 Swift 标准库嵌入到已设置的目标中,无论目标是否包含 Swift 代码。使用此设置的典型场景是当目标直接使用或嵌入另一个包含 Swift 代码的产品时。 (26158130)

这意味着ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES已经替换了EMBEDDED_CONTENT_CONTAINS_SWIFT,因此您需要在扩展目标中将前一个(ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES)更改为NO

【讨论】:

    【解决方案2】:

    对我来说解决这个问题的关键是,除了ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=NO,还要在所有目标的构建设置中设置EMBEDDED_CONTENT_CONTAINS_SWIFT=NO除了主应用目标。必须清除派生数据,但之后一切正常。

    【讨论】:

    • 自 Xcode 8.3 起已弃用。请参阅@Mesird 的回答。谢谢。
    【解决方案3】:

    所以这不是一个好的答案,但这是我为解决它所做的:

    我创建了一个新项目并复制到我的所有文件中 - 在一个没有框架的平面结构中,编辑只是为了删除相关的导入语句。现在可以正常上传了。所以框架结构才是问题的根源。不确定 Swift 嵌入式自定义库的想法是否刚刚被打破,或者我做错了什么,所以仍在寻找更好的答案......

    【讨论】:

      猜你喜欢
      • 2015-08-02
      • 2014-12-23
      • 2014-11-10
      • 2016-06-15
      • 2023-03-07
      • 2015-01-25
      • 2020-05-20
      • 2015-01-25
      相关资源
      最近更新 更多