美文网首页
在 Xcode 15 上 debug iOS12+ 设备崩溃的问

在 Xcode 15 上 debug iOS12+ 设备崩溃的问

作者: 我叫没名字啊 | 来源:发表于2023-12-07 20:51 被阅读0次

Q1:APP 收到线上客诉,说在 iOS12+ 系统的设备上,点开就直接崩溃;

用户反馈说上一个版本是可以正常运行的,这个版本更新后,开始点开就崩溃。最后定位到可能是因为打包机升级了 Xcode15。
崩溃的地方没有提供 log,也没有提供太多的堆栈信息。

crash 界面.jpeg

堆栈信息如下:

    0x1092b5040 <+64>:  bl     0x1092b5088               ; dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*)
->  0x1092b5044 <+68>:  mov    x16, x0

A1:搜索后发现,确实是因为 Xcode15 后,一些编译规则进行了修改,导致的崩溃。问题链接

苹果官方在更新文档里,也回答了这个问题,要么把最低支持版本提高到 iOS15,要么修改 OTHER_LDFLAGS 选项;官方解答

提高最低支持版本这事显然不太靠谱,所以我们可以去TARGET -> Build Setting -> OTHER_LDFLAGS 加上 -Wl-ld_classic

Build Setting.png
OTHER_LDFLAGS.png

Q2:上面的问题解决后,启动时又出现了新的报错,提示 Library not loaded,SwiftUI.framework

crash 界面.jpeg

堆栈信息:

dyld`:
    0x10be982e0 <+0>:  mov    x16, #0x209
    0x10be982e4 <+4>:  svc    #0x80
->  0x10be982e8 <+8>:  b.lo   0x10be98300               ; <+32>
    0x10be982ec <+12>: stp    x29, x30, [sp, #-0x10]!
    0x10be982f0 <+16>: mov    x29, sp
    0x10be982f4 <+20>: bl     0x10be9771c               ; cerror_nocancel
    0x10be982f8 <+24>: mov    sp, x29
    0x10be982fc <+28>: ldp    x29, x30, [sp], #0x10
    0x10be98300 <+32>: ret    

log:

dyld: Library not loaded: /System/Library/Frameworks/SwiftUI.framework/SwiftUI
  Referenced from: /var/containers/Bundle/Application/xxxxxxxxx/xxx.app/xxx
  Reason: image not found

A2:这个的 log 就很明确了,库没加载上;

我们项目是 OC 的,里面引了几个 swift 的库。至于为啥以前没问题,现在 crash 了,那 Xcode15 之后编译严格了很多,我也很无奈,也很想骂他们啊 (╯-_-)╯~╩╩

好在官方也给留了解决方案(官方解决方案),你手动引一下,然后设置 Optional,那我就不对你严格检查了;

所以我们需要检查下这里有没有加上 SwiftUI.framework,然后把规则改成 Optional,就 OK 了。

解决方案.png

相关文章

  • iOS崩溃日志收集与解析

    收集crash日志方式 1.设备上直接查看 2.xcode获取设备上信息 3.xcode获取发布版本崩溃信息 下图...

  • iOS崩溃问题汇总

    1.Xcode9打包,在iOS 9.0.2, iOS 9.2和iOS9.2.1上崩溃.而且用debug\relea...

  • Xcode tips

    1.让xcode在崩溃时debug定位到出错代码,而不是main.m 在Xcode左侧⾯板中切换到Breakpoi...

  • iOS9 UIcollecionView crash 记录

    UICollectionView的崩溃经常在Debug环境也无法定位,因为Xcode不能提示你正确的崩溃位置在哪?...

  • Mac下.sqlite文件打开

    如果是自己debug进苹果设备的app,在Xcode的Device and Simulators中是可以浏览包内的...

  • App崩溃日志

    1.本机崩溃日志,有时候未开启debug模式的时候,崩溃是看不到的,可以打开Xcode,选择Window -> D...

  • Xcode12使用的小Tips

    1、Debug Area debug区域在更新到Xcode12后,非运行状态时,Xcode界面不能调出Debug区...

  • ios崩溃分析

    崩溃日志的获取 崩溃日志的获取:ios设备上的应用闪退之后会生成崩溃报告存储在设备上,可以通过这样几种途径获取设备...

  • ios抓取carsh方法

    获取iOS设备上崩溃日志(Crash Log)的方法 第一个方法:XCode 的菜单Window->Organiz...

  • iOS crash 解析崩溃日志

    解析崩溃日志 一 获取crash 1.用户把设备连接到电脑上,打开xcode-window,选中Devices-当...

网友评论

      本文标题:在 Xcode 15 上 debug iOS12+ 设备崩溃的问

      本文链接:https://www.haomeiwen.com/subject/ogosgdtx.html