You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

iOS真机运行自定义框架App遇dyld库加载失败求助

解决iOS真机运行时dyld找不到libswiftCore.dylib的问题

我之前在集成自研Swift Framework到iOS应用时,也碰到过一模一样的真机加载报错,试过添加Embedded Binaries没解决的话,可以按下面这些步骤逐一排查:

1. 检查自研Framework的Build Settings配置

  • 打开你的Framework项目,找到Build Settings,搜索Always Embed Swift Standard Libraries,确保它被设置为YES。如果Framework是用Swift编写的,这个选项关闭的话,真机打包时不会自动嵌入Swift核心库,就会出现找不到libswiftCore.dylib的问题。
  • 确认Mach-O Type设置为Dynamic Library(如果你的Framework是动态类型的),静态库不需要Embed,但动态库必须设置正确的类型才能被主应用加载。

2. 核对主应用的相关配置

  • 主应用的Build Settings里,搜索Runpath Search Paths,确保包含@executable_path/Frameworks@loader_path/Frameworks这两个路径。这是dyld查找依赖库的关键路径,缺失的话会导致无法定位到Swift核心库。
  • 再次确认你的Framework同时出现在Linked Frameworks and LibrariesEmbedded Binaries列表中。有时候只添加了Embedded但没Linked,也会引发加载问题。

3. 清理缓存并重建项目

  • 先执行Product > Clean Build Folder(快捷键Cmd+Shift+K)清理编译缓存,然后手动删除Derived Data文件夹(可以在Xcode偏好设置的Locations选项卡找到路径)。
  • 重启Xcode,重新连接真机,再重新编译运行。很多时候奇怪的加载问题都是缓存导致的,清理后大概率能解决。

4. 检查签名配置

  • 确保你的Framework和主应用使用相同的Code Signing Identity(同一个开发者账号或团队证书)。签名不匹配的话,dyld会拒绝加载Framework。
  • 在主应用的Build Phases中找到Embed Frameworks阶段,确认你的Framework的Code Sign On Copy选项是勾选状态。这个选项会在嵌入Framework时自动重新签名,避免签名不一致的问题。

5. 混写Framework额外检查(如果适用)

如果你的Framework是Swift和Objective-C混写的,还要确认:

  • Framework的Build SettingsDefines Module设置为YES,且Module Name配置正确,确保主应用能正确识别到这个模块。

6. 验证打包内容

可以把生成的IPA包解压,查看Frameworks目录下是否存在libswiftCore.dylib和你的XXX.framework。如果Swift核心库不在里面,说明打包时没有正确嵌入,回到第一步重新检查Always Embed Swift Standard Libraries的设置。

内容的提问来源于stack exchange,提问作者Benjamin Gimet

火山引擎 最新活动