iOS验证存档因CFBundleIdentifier冲突和无效捆绑而失败

时间:2018-09-21 14:10:11

标签: ios xcode itunesconnect carthage

我存档了我的应用,并希望上传ipa文件。
但是,由于这些错误,上传失败。

App Store Connect Operation Error
CFBundleIdentifier Collision. There is more than one bundle with the     CFBundleIdentifier value 'org.alamofire.Alamofire' under the iOS application     'MyApp.app'.

App Store Connect Operation Error
CFBundleIdentifier Collision. There is more than one bundle with the     CFBundleIdentifier value 'org.alamofire.AlamofireImage' under the iOS application 'MyApp.app'.

App Store Connect Operation Error
CFBundleIdentifier Collision. There is more than one bundle with the     CFBundleIdentifier value 'com.swiftyjson.SwiftyJSON' under the iOS application 'MyApp.app'.

App Store Connect Operation Error
Invalid Bundle. The bundle at 'MyApp.app/Frameworks/MyAppEmbedded.framework' contains disallowed nested bundles.

App Store Connect Operation Error
Invalid Bundle. The bundle at 'MyApp.app/Frameworks/MyAppEmbedded.framework' contains disallowed file 'Frameworks'.

App Store Connect Operation Error
Invalid Bundle. The bundle at 'MyApp.app/PlugIns/MyAppShare.appex' contains disallowed nested bundles.

App Store Connect Operation Error
Invalid Bundle. The bundle at 'MyApp.app/PlugIns/MyAppShare.appex' contains disallowed file 'Frameworks'.

项目使用Swift,但是某些第三方库使用Objective-C。
这些是我的项目结构。

目标
MyApp-主应用
MyAppEmbeddded-嵌入式框架
MyAppShare-共享扩展名
MyApp,MyAppEmbedded和MyAppShare使用迦太基和CocoaPods。
这是MyApp的“嵌入式二进制文件”和“链接的框架和库”
enter image description here 这是MyAppEmbedded的“链接框架和库”
enter image description here 这是MyAppShare“链接的框架和库”
enter image description here CFBundleIdentifier冲突错误发生“ Alamofire”,“ AlamofireImage”和“ SwiftyJSON”。
MyAppEmbedded使用了这三个框架。
因此,我认为嵌入式框架有一定的原因。 另外,我发现ipa的内容很奇怪。
嵌入式框架包括三个相同的嵌入式框架。
enter image description here

我阅读了有关上传错误的一些问题,并检查了“构建设置”。
MyApp:“始终嵌入Swift标准库”是
MyAppEmedded和MyAppShare:“始终嵌入Swift标准库”

如果您知道此错误,请告诉我。

2 个答案:

答案 0 :(得分:1)

我的模块设置如下:

First module
Second module (embeds First module)
Main App (embeds First and Second module)

在第二个模块目标(不是Main App!)中为第一个模块设置EmbedDo Not Embed对我来说解决了这个问题✅

enter image description here

答案 1 :(得分:0)

我找到了解决方案。

我从嵌入式框架和ShareExtension中删除了主应用程序使用的框架。
而且我的应用程序可以构建,并且上传验证可以。

我认为嵌入式框架和扩展需要包含框架,但是只有主应用程序才包含框架,其他目标也能够使用主应用程序所包含的框架。