You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS打包分发遇CFBundleIdentifier冲突问题求助

解决iOS归档时CFBundleIdentifier冲突(AWSIoT重复)问题

问题背景

我开发的SDK中嵌入了以下AWS框架:

  • AWSAuthCore.framework
  • AWSCognitoIdentityProvider.framework
  • AWSCognitoIdentityProviderASF.framework
  • AWSCore.framework
  • AWSIoT.framework
  • AWSMobileClient.framework

将该SDK嵌入主应用后运行正常,但归档分发时出现验证错误:

Asset validation failed
CFBundleIdentifier Collision. There is more than one bundle with the CFBundleIdentifier value /com.amazonaws.sdk.ios.AWSIoT, under the iOS application 'yodda-seed.app'. (ID: 7632d87c-9208-4739-be48-95e0f421cebe)

已尝试移除并重新添加框架、清理构建、删除派生数据,问题仍未解决。


解决方法

1. 排查重复嵌入来源

打开主应用Xcode项目,进入对应主应用Target的Frameworks, Libraries, and Embedded Content面板:

  • 检查是否同时存在你的SDK(已包含AWSIoT)和独立的AWSIoT.framework条目
  • 如果主应用通过其他依赖(比如CocoaPods)也引入了AWSIoT,就会和SDK里的嵌入版本产生冲突

2. 调整SDK的框架嵌入策略

针对SDK项目中的AWS框架,修改它们的嵌入设置:

  • 选中SDK Target下的所有AWS框架,将Embed & Sign改为Do Not Embed
  • 只保留Link Binary With Libraries的引用,让主应用统一负责嵌入所有AWS框架,避免重复打包

3. 检查框架类型配置

如果你的SDK是动态框架,确保AWS框架以静态方式链接:

  • 在SDK的Build Settings中,将Always Embed Swift Standard Libraries设为No(若使用Swift)
  • 确认AWS框架的Mach-O Type为Static Library,而非Dynamic Library,这样不会生成独立的bundle文件

4. 手动验证归档包结构

  • 归档完成后,右键归档文件选择Show in Finder
  • 右键归档包选择Show Package Contents,进入Payload/yodda-seed.app/Frameworks目录
  • 查看是否存在多个AWSIoT.framework,若有则追踪来源,删除重复项

5. 同步AWS SDK版本

确保SDK和主应用使用的所有AWS框架版本完全一致:

  • 如果用CocoaPods,在主应用Podfile中锁定AWS SDK版本,示例:
    pod 'AWSIoT', '~> 2.33.0'
    pod 'AWSMobileClient', '~> 2.33.0'
    
  • 版本不一致会导致Xcode识别为不同bundle,但CFBundleIdentifier相同,触发冲突

内容的提问来源于stack exchange,提问作者Dinesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:35:07