Xamarin项目添加iMessageExtension后上传IPA遇ITMS-90685错误求助
解决Xamarin iOS iMessage Extension上传时的CFBundleIdentifier冲突问题
针对你遇到的ERROR ITMS-90685: "CFBundleIdentifier Collision. There is more than one bundle with the CFBundleIdentifier value 'xamarin.ios.xamarin-framework' under the iOS application 'appName.iOS.app'."错误,这是Xamarin项目添加iMessage扩展后常见的框架重复嵌入问题,给你几个针对性的解决步骤:
1. 调整项目构建参数
- 打开Visual Studio for Mac,分别选中主iOS项目和iMessage Extension项目
- 右键选择选项 → iOS构建 → 附加参数
- 在附加参数中添加:
--linkskip=xamarin.ios.xamarin-framework,这个参数会让构建过程跳过重复嵌入该框架的操作 - 保存设置后重新编译项目
2. 修正扩展项目的框架引用属性
- 右键点击iMessage Extension项目 → 引用 → 找到
Xamarin.iOS框架 - 将它的复制本地(Copy Local)属性设置为
False——主应用已经嵌入了这个核心框架,扩展不需要重复嵌入 - 同理检查其他第三方框架,确保扩展项目里的框架引用都设置为不复制本地
3. 彻底清理后重新构建
- 点击顶部菜单栏生成 → 清理所有,清空现有构建缓存
- 手动删除项目目录下的
bin和obj文件夹,包括扩展项目对应的这两个目录 - 重启Visual Studio for Mac,重新生成整个解决方案后再打包IPA
4. 验证Info.plist配置
- 确认主应用和扩展的
Info.plist里的CFBundleIdentifier确实是你设置的com.company.appname和com.company.appname.imessageextension,没有误写为冲突的xamarin.ios.xamarin-framework - 检查扩展的
Info.plist中NSExtension→NSExtensionAttributes下的MessagesApplicationExtensionBundleIdentifier是否正确指向扩展自身的Bundle ID
如果以上步骤无效,可以用命令行手动排查重复框架:
unzip your-app.ipa cd Payload/appName.iOS.app find . -name "*.framework" -exec defaults read {} Info.plist CFBundleIdentifier \;
这个命令会列出IPA内所有嵌入框架的Bundle ID,你可以直观看到哪个部分重复嵌入了xamarin.ios.xamarin-framework,再回到项目中针对性调整。
内容的提问来源于stack exchange,提问作者Luís Miguel
相关产品推荐
相关产品推荐

