Swift嵌套Framework运行崩溃:路径找不到问题求助
嵌套Swift Framework加载失败解决方案
问题重现
运行包含嵌套Framework的Swift应用时崩溃,报错找不到innerFramework的二进制文件:
'/Users/user/Library/Developer/Xcode/DerivedData/temp/Build/Products/Debug/frameworkTest.app/Contents/Frameworks/myFramework.framework/Versions/A/../Frameworks/innerFramework.framework/Versions/A/innerFramework'
(no such file)
访达中能看到对应路径的文件,但应用搜索路径无法识别。
解决步骤
检查Embed & Sign配置
- 主应用
frameworkTest:选中myFramework,在General标签的Frameworks, Libraries, and Embedded Content里,将Embed设置为Embed & Sign;不要直接添加innerFramework到主应用。 myFramework:选中innerFramework,同样设置Embed为Embed & Sign,确保Xcode打包时把innerFramework嵌套进myFramework的Frameworks目录。
- 主应用
修正Framework搜索路径
- 主应用
frameworkTest的Framework Search Paths保留$(inherited)和$(PROJECT_DIR)/frameworkTest即可,无需添加innerFramework的路径。 myFramework的Framework Search Paths只保留$(inherited)和$(PROJECT_DIR)/myFramework/Frameworks,设为非递归模式,多余的innerFramework单独路径可以删掉。
- 主应用
调整Build Phases依赖顺序
- 主应用Build Phases -> Target Dependencies:只保留
myFramework,innerFramework不需要在这里出现。 myFramework的Build Phases -> Target Dependencies:添加innerFramework,保证编译时先构建innerFramework再构建myFramework。
- 主应用Build Phases -> Target Dependencies:只保留
清理缓存后重新构建
- 执行
Product -> Clean Build Folder(快捷键Shift+Cmd+K) - 手动删除DerivedData目录:
/Users/user/Library/Developer/Xcode/DerivedData/temp - 重新执行
Product -> Build后再运行应用。
- 执行
验证Framework目录结构
- 确认
myFramework.framework/Frameworks/innerFramework.framework/Versions/A/innerFramework路径下的二进制文件存在,且文件权限正常(具备可执行权限)。
- 确认
内容的提问来源于stack exchange,提问作者Navaneeth A S
相关产品推荐
相关产品推荐

