引用charts库引发的错误 dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib

OC 项目引用了swift代码库charts,才手机11系统和12系统引发了如下问题,高系统是没有此类问题的

dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib

网上很多大神都拿出了解决办法:

比如:

最基础的解决

更新Xcode14后低版本iPhone调试报错

dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib

Referenced from: /var/containers/Bundle/Application/…/….app/…

Reason: image not found

这是缺少libswiftCoreGraphics库

直接导入libswiftCoreGraphics库即可解决。

————————————————

版权声明:本文为CSDN博主「Kevin写代码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_42979360/article/details/126962070

库肯定是引用好了的,但是没有解决问题。

解决思路1

升级Xcode 14 .打包的app ,在Xcode14之后发现编译项目在iOS12.5以上的系统都正常,但是在跑iOS12.5以下的系统,例如iOS11,之类的系统会报dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib

我这应该是是加载libswiftCoreGraphics动态库失败了,没有找到该库的文件,我用的这个Charts三方库需要依赖这个libswiftCoreGraphics系统库。

运行时哪个三方库报这个错,就找到报错的三方库,同样在Build Setting ->Other Link Flags路径下添加这个-Wl,-weak-lswiftCoreGraphics。比如我Charts三方库:

4790876-409349acbcb9b37e.jpg

其他的库报类似的错 按照这个思路改就行了

作者:小锤子_

链接:https://www.jianshu.com/p/23ecb9c08ea7

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

解决思路更全面一些2

随着16.0系统正式发布,最近升级xcode14以调试16.0的真机。升级成功后,发现调试11.x和12.x固件的iphone,运行app直接崩溃了,启动不了。

崩溃日志如下:

dyld:Library not loaded:/usr/lib/swift/libswiftCoreGraphics.dylibReferencedfrom:/var/containers/Bundle/Application/xxx/xxxxxxx.app/xxxxxxxReason:image not found

看字面上的意思是加载libswiftCoreGraphics动态库失败了,没有找到该库的文件。

这个库属于系统库,因为项目采用了OC+Swift混编,所以需要依赖。

上网查找类似的问题,试了常见的解决方案如下:

1.手机重启

2.xcode 清理项目生成文件,重新build

3.修改build settings- Always Embed Swift Standard Libraries-YES

4.重新添加build settings- Runpath Search Paths-@executable_path/Frameworks

5.添加build settings- Runpath Search Paths-/usr/lib/swift

6.关闭bitcode(项目设置里也没有开启Bitcode)

都没有解决问题

在苹果开发者论坛上也有好些帖子,遇到这个问题,没有给出解决方案。

查看生成的app显示包内容,看到@executable_path/Frameworks目录下,有libswiftCoreGraphics.dylib文件,如下图:

app-name-Frameworks.png

但运行的时候却加载了另一个路径/usr/lib/swift/libswiftCoreGraphics.dylib

有帖子说用install_name_tool命令工具对app的动态库路径做修改,命令如下

install_name_tool oldpath newpath app_path/app_name

因为觉得治标不治本,所以没有尝试。

用otool命令工具查看app依赖的动态库,命令如下

otool -L app_path/app_name

xcode 14编译生成的app的依赖库,如下图:

xcode14 otool.png

之前使用xcode13调试11.x真机运行正常,所以比较下

xcode13编译生成的app的依赖库,如下图:

xcode13 otool.png

对比发现xcode14生成的app的依赖库多了/usr/lib/swift/libswiftCoreGraphics.dylib,算是找到问题了。

同时看到依赖库里也有@rpath/libswiftCoreGraphics.dylib,感觉是xcode14编译时重复依赖了系统库。

怎么解决重复依赖的问题,继续查资料,发现xcode13.2版本发布日志里有提到一个已知问题,原文如下:

Apps built with Xcode 13 or Xcode 13.1 that make use of Swift Concurrency features (such as async/await), deploy to iOS prior to 15, tvOS prior to 15, or watchOS prior to 8, and have bitcode enabled may crash at launch with an error reporting that the libswift_Concurrency.dylib library was not loaded.

Workaround: Add -Wl,-weak-lswift_Concurrency -Wl,-rpath,/usr/lib/swift to Other Linker Flags in the app’s build settings.

中文意思如下:

使用 Xcode 13 或 Xcode 13.1 构建的应用程序使用 Swift 并发功能(例如async/ await),部署到 15 之前的 iOS、15 之前的 tvOS 或 8 之前的 watchOS,并且启用了位码可能会在启动时崩溃并出现错误报告该库未加载。libswift_Concurrency.dylib

解决方法:在应用程序的构建设置中添加到其他链接器标志。-Wl,-weak-lswift_Concurrency -Wl,-rpath,/usr/lib/swift

因此我们可以借鉴一下,用弱引用(或者叫弱链接)的方式同时指定弱链接的路径和先后顺序,来处理libswiftCoreGraphics.dylib

buildsettings- Other Linker Flags-添加"-Wl,-weak-lswiftCoreGraphics -Wl,-rpath,/usr/lib/swift"

至此,解决了这个问题!应该是xcode14自身兼容低固件的bug导致的问题。

作者:喵了个二咪

链接:https://www.jianshu.com/p/6d205a3e1f9f

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

后来发找到了这篇文章:

最终解决方案

背景

测试说iOS 12的手机上安装Xcode14.0.2导出的新包后,打开就崩溃,但是在系统版本高的手机上就没有问题。

<!--more-->

调试后发现,崩溃日志是dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib,具体如下:

dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib Referenced from: /private/var/containers/Bundle/Application/55730273-D9D6-4C42-9335-7A56F92B7F2C/xxx.app/Frameworks/FSPagerView.framework/FSPagerView

Reason: image not founds

搜索后发现,开发者社区中有此问题的记录,xcode14:Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib,解决方案是:

If you are building your app with Xcode 14 or Xcode 14.0.1, your app will crash on older OS versions, including while building and testing directly from Xcode, as well as after submitting the app to the App Store. The OS versions affected include iOS 11 - 12.1, macOS 10.13 - 10.14.3, as well as watchOS and tvOS versions from the same time frame. To work around the crash when building with Xcode 14, add -Wl,-weak-lswiftCoreGraphics (substituting other library names for swiftCoreGraphics if appropriate for your crash) to the Other Linker Flags build setting.

即添加-Wl,-weak-lswiftCoreGraphics到Build Settings中的Other Linker Flags中。

这里要注意是添加到Other Linker Flags而不是Other Swift Flags,如果遇到下面的报错,就说明你和我一样,添加到了错误的地方。。。。

Driver threw unknown argument: '-weak-libswiftCoreGraphics' without emitting errors.

注意1

然而需要注意的是,假如项目有多个Target,如果添加在Target中,就要针对每个Target都要添加一次,很是麻烦,所以可以直接在PROJECT下的Build Settings中添加。

注意2

在项目中添加了-Wl,-weak-lswiftCoreGraphics到Other Linker Flags之后,编译运行发现还是会崩溃,还是报错

dyld: Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib Referenced from: /private/var/containers/Bundle/Application/55730273-D9D6-4C42-9335-7A56F92B7F2C/xxx.app/Frameworks/FSPagerView.framework/FSPagerView

Reason: image not founds

仔细看了之后,发现报错中提示的FSPagerView,是CocoaPods三方库,所以找到对应的第三方库,然后在对应库的Build Settings中找到Other Linker Flags,然后添加-Wl,-weak-lswiftCoreGraphics,再运行,发现还是报错,但是换了另一个三方库。。。

针对每个三方库一个个添加,是不可能的,太麻烦不说,每次Pod install之后就需要重新再设置,不是正确的解决办法。

所以有没有可能,在Podfile中post_install添加设置,统一一次性给所有三方库加这个编译设置。当然可以,设置如下:

post_installdo|installer|    installer.pods_project.targets.eachdo|target|        target.build_configurations.eachdo|config|          config.build_settings['OTHER_LDFLAGS'] ='-Wl,-weak-lswiftCoreGraphics'endendend

然后编译,发现报错,因为项目中有些库没有用到swiftCoreGraphics,比如OC的三方库,或者非UI的库,所以还是要改,需要区分添加。针对项目中Swift类型的UI相关的库,添加这个编译选项,其他的不添加,最终示例如下:

need_otherlinkerflags_frameworks = ['FSPagerView','HandyJSON','IQKeyboardManagerSwift','JXSegmentedView','KDCircularProgress','Kingfisher','RxSwift','PKHUD','RxCocoa','SnapKit','ZLPhotoBrowser']post_installdo|installer|    installer.pods_project.targets.eachdo|target|        target.build_configurations.eachdo|config|ifneed_otherlinkerflags_frameworks.include?(target.name)            config.build_settings['OTHER_LDFLAGS'] ='-Wl,-weak-lswiftCoreGraphics'endendendend

Pod install后,编译运行,发现可以正常运行了。再验证一下,非低版本手机上是否受到影响,没有影响,完美。

Done!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容