Xcode项目无法识别自定义Framework的代码变更该如何解决?
问题:修改自定义Framework方法名后Xcode无法识别变更
场景说明
- 创建两个Xcode项目:
- Framework项目:仅包含一个公开类和一个公开方法
- 普通Xcode项目
- 将Framework拖拽至普通项目,自动添加到目标的General标签及Build Phases的
Link Binary With Libraries中,随后在General的Frameworks, Libraries, and Embedded Content设置为Embed & Sign - 在ViewController中导入并调用方法,运行正常:
import MyCustom_Framework let customClass = MyCustom_Class() override func viewDidLoad() { super.viewDidLoad() customClass.someMethod(text: "Something") // 原方法名 } - 修改Framework中方法名从
someMethod改为anotherMethod后,Xcode无法识别该变更,尝试删除Derived Data、清理重构Framework、移除重新添加Framework均无效
解决步骤
- 确认Framework构建产物已更新
- 打开Framework项目,确保
anotherMethod已标记为public,执行Cmd + Shift + B重新构建。通过Build Settings -> Build Locations -> Per-configuration Build Products Path找到产物路径,确认文件修改时间为最新。
- 打开Framework项目,确保
- 手动替换主项目中的Framework
- 删除主项目内引用的旧Framework文件,从Framework项目的构建产物目录中拖拽最新的Framework到主项目,重新设置
Embed & Sign。
- 删除主项目内引用的旧Framework文件,从Framework项目的构建产物目录中拖拽最新的Framework到主项目,重新设置
- 检查主项目的Framework搜索路径
- 打开主项目Build Settings,搜索
Framework Search Paths,确认路径指向Framework的最新构建产物目录,而非旧缓存路径。
- 打开主项目Build Settings,搜索
- 深度清理主项目缓存
- 执行
Cmd + Shift + K清理主项目,关闭Xcode后删除主项目的Derived Data(路径可在Xcode -> Preferences -> Locations -> Derived Data查看),重新打开项目构建。
- 执行
- 清除模块缓存
- 前往
~/Library/Developer/Xcode/DerivedData/ModuleCache.noindex目录,删除所有与MyCustom_Framework相关的缓存文件,重启Xcode后重新构建。
- 前往
内容的提问来源于stack exchange,提问作者stackich
相关产品推荐
相关产品推荐

