无法上传嵌入了内部动态框架的 IPA

Posted

技术标签:

【中文标题】无法上传嵌入了内部动态框架的 IPA【英文标题】:Cannot upload IPA with Internal Dynamic Frameworks embedded 【发布时间】:2020-02-23 16:24:26 【问题描述】:

我尝试将我的应用上传到 App Store Connect Portal,该门户已经完美运行(我使用 Fastlane 进行自动化,并使用 Match 进行签名)。但是,我使用内部动态框架来构建我的代码,但是为了在实际设备上执行应用程序(通过在测试飞行中下载它或通过在 Xcode 中构建),有必要将框架拖到 将二进制文件与库嵌入框架 链接。由于现在可以在设备上部署它,因此测试飞行上传失败。作为一个侧节点,实际上不可能使用静态库,因为框架嵌入了资源。

这些是错误:

错误 ITMS-90680:“目录无效。捆绑 Payload/MyApp_ios.app/Frameworks/MyAppUIKit.framework/Logger.framework 未包含在正确命名的目录中。它应该位于“框架”下。” 错误 ITMS-90685:“CFBundleIdentifier 冲突。iOS 应用程序“MyApp_iOS.app”下的 CFBundleIdentifier 值为“de.app.myapp.Logger”的包不止一个。” 错误 ITMS-90205:“无效的捆绑包。'MyApp_iOS.app/Frameworks/MyAppUIKit.framework' 的捆绑包包含不允许的嵌套捆绑包。” iTunes Transporter 的返回状态为 1:错误 ITMS-90680:“无效目录。捆绑 Payload/MyApp_iOS.app/Frameworks/MyAppUIKit\n错误 ITMS-90685:”CFBundleIdentifier 冲突。 CFBundleIdentifier 值为 'de.app.myapp\nERROR ITMS-90205:“无效的捆绑包。'MyApp_iOS.app/Frameworks/MyAppUIKit.framework' 的捆绑包包含不允许的嵌套捆绑包。” 对 iTMSTransporter 的调用以非零退出状态完成:1。这表示失败。

我在 Catalina 上使用 Xcode 11.3.1

感谢您的帮助!

【问题讨论】:

【参考方案1】:

我遇到了同样的问题:项目已构建,在模拟器和设备上运行良好,但在上传到 Testflight 时出现错误。

事实证明,Xcode 11 中有一个新选项,可以控制您是否想要 EmbedDo Not Embed 添加到目标的动态框架。 (项目 > 选择您的目标 > 常规选项卡 > 框架和库部分)

在我正在处理的项目中,有一个 Core.framework 我们嵌入到了多个其他动态框架中,它在上传到 Testflight 时触发了错误,因为 Core.framework 嵌入了多个位置。

基本上错误信息告诉我们:

CFBundleIdentifier 冲突。在 iOS 应用程序“MyApp.app”下有多个 CFBundleIdentifier 值为“...”的包。捆绑包包含不允许的嵌套捆绑包。这表示失败。”

在我选择Do Not Embed 后,这个错误就消失了。尝试为您的 Logger.framework 设置相同的值

【讨论】:

通过SPM添加框架后如何解决这个问题? @Sergio 你解决了吗?

以上是关于无法上传嵌入了内部动态框架的 IPA的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 11.3.1 没有将二进制第三方框架嵌入到包(IPA)中[重复]

xcodebuild 命令无法与动态可可触摸框架一起正常工作

使用 xcodebuild 打包 ipa 的位码错误

在设备上构建和运行时,仅将嵌入式框架与其他动态框架链接失败

无法使用 Application Loader 将 .ipa 上传到 iTunes

无法使用 Application Loader 将 .ipa 上传到 iTunes