无法上传嵌入了内部动态框架的 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 中有一个新选项,可以控制您是否想要 Embed
或 Do 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 命令无法与动态可可触摸框架一起正常工作