无法在模拟器运行App:构建成功但插件占位符创建失败
我之前整理项目文件后也碰到过一模一样的问题——项目构建成功,但模拟器启动时就报Failed to create plugin placeholder for /Users/zc/Library/Developer/Xcode/DerivedData/iPhoneHandheldACT-cwlfykavlwlqwlhbecjubziblyzi/Build/Products/Debug-iphonesimulator/iPhoneHandheldACT.app/PlugIns/CallerID.appex的错误。你试过的删Derived Data、清理项目这些常规操作没效果的话,大概率是Extension的配置或文件关联在移动后出了问题,给你几个针对性的排查和修复步骤:
检查App Extension的目标关联
选中CallerID.appex对应的Extension目标,随便选一个Extension的源码文件,打开右侧属性检查器,确认主App的目标已经被勾选。移动文件后这个关联很容易丢失,导致Xcode没法把Extension打包进主App。验证主App的Extension嵌入配置
打开主App的Target,切换到General标签页,滑到Frameworks, Libraries, and Embedded Content区域,确认CallerID.appex已经在列表里,并且Embed选项设置为Embed & Sign。如果不在列表里,点击+按钮,找到Extension的产品文件添加进去。修复文件路径引用
整理文件后,部分Extension文件的引用可能变成了绝对路径,导致Xcode找不到。选中Extension的文件,右侧属性检查器里的Location选项改成Relative to Project或者Relative to Group,这样不管项目移到哪里,路径都能正确识别。彻底清空模拟器缓存
除了Derived Data,模拟器的缓存也可能残留旧的Extension数据。打开模拟器,点击顶部菜单Device->Erase All Content and Settings,清空后重启模拟器再运行项目。重建Xcode项目索引
按住Option键,点击Xcode顶部的Product菜单,选择Clean Build Folder(比普通Clean更彻底);然后打开File->Workspace Settings,点击Delete按钮删除当前索引,重启Xcode后重新构建项目。
这些步骤应该能解决你遇到的问题,我当时就是通过检查Extension的嵌入配置和路径引用搞定的。
内容的提问来源于stack exchange,提问作者Teja Nandamuri

