【问题标题】:Error ITMS-90206 Invalid bundle contains disallowed file 'Frameworks'错误 ITMS-90206 无效的捆绑包包含不允许的文件“框架”
【发布时间】:2016-06-15 09:46:06
【问题描述】:

我在通过 Xcode 将我的应用程序上传到应用商店时遇到问题,尤其是这个。

我看到很多关于这个错误的帖子,但都在谈论Extension App,我不使用。

我正在使用Custom frameworkCocoapods

你可以在这里看到我的树:

  • XXX 是我的项目应用名称
  • SharedXXX 是我的custom framework
  • Podscocoa pods创建的项目

这是我的可可podFile

use_frameworks!
link_with 'XXX', 'SharedXXX'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.1'


workspace 'XXX'

xcodeproj 'XXX/XXX.xcodeproj'
xcodeproj 'Shared/SharedXXX.xcodeproj'

def default_pods
    pod 'Reveal-iOS-SDK', :configurations => ['Debug']
    pod "SnapKit", '~> 0.17.0'
    pod "DKChainableAnimationKit", '~> 1.6.0'
    pod "AsyncSwift"
end

def shared_pods
    pod "Alamofire", '~> 3.0'
    pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git'
    pod 'ReachabilitySwift', :git => 'https://github.com/ashleymills/Reachability.swift'
end

target :XXX do
    xcodeproj 'XXX/XXX.xcodeproj'
    default_pods
    shared_pods
end

target :XXXDev do
    xcodeproj 'XXX/XXX.xcodeproj'
    default_pods
    shared_pods
end

target :SharedXXX do
    xcodeproj 'Shared/SharedXXXX.xcodeproj'
    shared_pods
end

custom framework (SharedXXX) 的构建设置:

我将 Embedded 属性设置为 Yes

custom framework (SharedXXX) 的常规设置:

Cocoapods提供的框架是链接的。

最后,

主项目的常规设置(应用项目:在树上称为 XXX

:

有什么想法吗?

【问题讨论】:

  • 从错误消息看来,SharedXXX.frameworks 本身包含一个名为“frameworks”的文件。显然苹果不喜欢这样。检查并查看是否有该名称的文件。如果不是,请确保没有错误地引用框架两次。如果一切都失败了谷歌错误代码
  • 我已经用谷歌搜索了错误代码,但都在谈论 Embedded Swift 属性。我的项目中没有名为“Frameworks”的文件。它可以是来自 Cocoapods 的文件吗?跨度>
  • 在这里查看我的答案 - stackoverflow.com/questions/29608264/…

标签: ios xcode cocoapods ios-frameworks swift-custom-framework


【解决方案1】:

我解决了问题

首先,设置成Build Settings

  • 对于主项目(此处为 XXX):Embedded Content Contains Swift Code

  • 自定义框架(SharedXXX):Embedded Content Contains Swift CodeNO

  • 自定义框架(SharedXXX):Runpath Search Path = @executable_path/../../Frameworks

这帮助我解决了这个问题

【讨论】:

  • 在将 Embedded Content Contains Swift Code 设置为 NO 后,自定义框架无法使用 TestFlight 安装应用程序。该应用程序已成功上传到 iTunes,但在 80% 下载后从 TestFlight 下载时出现无法下载应用程序的消息。
  • 在我的框架目标中将包含 Swift 代码的嵌入式内容设置为 NO 解决了该问题。
【解决方案2】:

我在尝试从 Xcode 9.3 上传时遇到了同样的问题 发生这种情况是因为我在我的 OneSignal 中添加了“use_frameworks” NotificationServiceExtension

Build Settings 中的 Always Embed Swift Standard Libraries 值应设置为 Yes,仅适用于您的主项目,而不适用于您的自定义框架或扩展。

【讨论】:

  • 与 Xcode 10 有完全相同的问题。如果您查看错误 XXX.app/Frameworks/YYY.framework 中提到的路径,您会发现罪魁祸首 Frameworks 文件夹将包含所有 Swift 标准的重复图书馆!将 Always Embed Swift Standard Libraries 设置为 Yes 正好解决了这个问题。
  • 谢谢,@roxanneM!您应该将此作为独立解决方案发布!
  • @roxanneM,同样谢谢你。这就是为我解决的问题。我有一个带有各种插件的 Flutter 项目。我的 Xcode 项目有主 Runner 目标和另一个 OneSignalNotificationExtension 目标。我将后者的“始终嵌入 Swift 标准库”设置为否,并将主 Runner 设置为是,并且能够在没有 OP 错误的情况下上传到商店。
猜你喜欢
  • 2015-08-02
  • 2014-11-10
  • 2014-12-23
  • 2023-03-07
  • 1970-01-01
  • 2015-01-25
  • 2014-11-03
  • 2020-05-20
相关资源
最近更新 更多