Xcode创建独立Watch App为何生成iPhone Stub?能否移除?
独立Watch应用的iPhone Stub问题全解
1. 为什么会生成iPhone Stub?
这是Xcode为兼容App Store提交流程留下的历史产物。早期Apple Watch应用必须依附iPhone应用存在,后来WatchOS支持独立运行后,Xcode仍保留了这个空壳Stub,用来适配旧的提交通道,但实际上现在独立Watch应用完全不需要它。
2. 能不能/应该移除iPhone Stub?
完全可以,而且非常推荐移除,能从根源解决图标缺失、审核拒绝以及后续可能出现的其他兼容问题。移除步骤如下:
- 在项目导航栏找到iPhone版Target(和Watch应用同名的主Target),右键选择「Delete」
- 删除弹窗里选「Remove Reference」(别选「Move to Trash」,防止误删和Watch应用共享的文件)
- 手动清理项目里残留的iPhone相关文件:比如iPhone版的
AppDelegate.swift、LaunchScreen.storyboard、空的Info.plist等 - 检查项目的「Build Settings」和主配置文件,确保没有残留的iPhone平台配置
3. 图标缺失导致审核拒绝的临时解决(若不想移除Stub)
要是暂时不想动Target,就得给iPhone Stub补全图标:
- 给iPhone Target新建一个
xcassets资源目录 - 按照App Store要求上传全尺寸的iPhone图标(包括1024x1024的App Store图标,以及各种设备尺寸的图标)
- 进入iPhone Target的「Build Phases」,把这个
xcassets添加到「Copy Bundle Resources」列表里 - 重新打包后用Xcode的「Archive」验证,确保外层
AppName.app能正确显示图标
4. MessagesApplicationStub编译警告的解决
这个警告是Xcode模拟器里的Messages Stub适配Watch设备时的bug,和实际应用完全无关,解决办法有两个:
- 最彻底的:移除iPhone Stub后,警告会自动消失,因为不再编译iPhone相关的Stub代码
- 临时忽略:如果保留Stub,直接无视即可,它不会影响真机编译和App Store提交;也可以在项目的「Build Settings」里开启「Suppress Warnings」,把对应的警告ID加进去屏蔽
内容的提问来源于stack exchange,提问作者Gary Simpson
相关产品推荐
相关产品推荐

