Xcode 14.3.1中Xcode Source Extension测试异常求助
嗨,我看到你在Xcode 14.3.1里测试Source Extension时遇到了编辑器里不显示的问题,这确实挺让人头疼的——我之前也帮不少开发者排查过类似的情况,先给你梳理几个可能的解决方向,你可以逐一试试:
检查扩展的签名与Info.plist配置
首先得确认你的Source Extension target和主App的签名配置是一致的,Xcode 14+对签名的要求更严格,一定要保证两者用同一个Team,且Extension的Bundle Identifier是主App ID的后缀形式(比如主App是com.yourname.YourApp,Extension就得是com.yourname.YourApp.SourceExtension)。另外,重点检查Extension的Info.plist:- 必须有
NSExtension字典,其中NSExtensionPointIdentifier的值要准确设为com.apple.dt.source-code-editor NSExtensionAttributes里的XCSourceEditorExtensionPrincipalClass要指向你的扩展类,最好用$(PRODUCT_MODULE_NAME).YourExtensionClass这种动态变量,避免硬编码出错
- 必须有
模拟器里启用扩展的正确步骤
你找不到启用位置是正常的,因为Source Extension是依附主App的:- 先在模拟器里运行一次你的主App,确保主App能正常打开
- 打开模拟器的「设置」,找到你的主App图标并点击进入,就能看到对应的Extension开关了,打开它
- 重启Xcode和模拟器,再重新运行Extension测试
如果还是没显示,试试用命令清空模拟器缓存:
xcrun simctl erase all,然后重新部署主App和Extension。清理Xcode深层缓存
你已经重置过Xcode,但可能还有残留的缓存影响加载:- 关闭Xcode,删除
~/Library/Developer/Xcode/DerivedData目录下的所有内容 - 执行
killall -9 com.apple.CoreSimulator.CoreSimulatorService杀掉模拟器服务,再重启Xcode - 也可以在Xcode的「Preferences > Locations」里,点击DerivedData旁边的箭头,直接删除当前项目的缓存文件夹
- 关闭Xcode,删除
验证Xcode版本兼容性
你可以先创建一个全新的空项目,添加默认的Source Extension模板,看看能不能在模拟器里正常显示。如果全新项目可以,那就是你现有项目的配置出了问题;如果全新项目也不行,那大概率是Xcode 14.3.1本身的小bug,可以考虑升级到Xcode 15或者降级到14.2版本试试。
如果这些方法都试过还是没解决,你可以把你的Info.plist配置截图、项目签名设置贴出来,这样能更精准地帮你定位问题~
备注:内容来源于stack exchange,提问作者ChickenRei

