Xcode15在iOS12系统上崩溃的原因

news/2024/7/20 23:12:05 标签: ios

1.1.崩溃在_dyld_start,如图:

崩溃截图

解决办法:在other link flags添加-ld64
注意:该办法只能解决运行真机,archive出来的包依然报错闪退......

1.2  SwiftUI导致iOS12及以下系统闪退问题

SwiftUI是iOS13开始使用,iOS13以下是没有的
如果使用了SwiftUI,那么不进行特别处理的话,在iOS12上会崩溃,哪怕你使用了#available进行处理。
因为使用了SwiftUI之后Xcode会默认导入SwiftUI.framework库。而且默认导入的framework都是Required类型。

解决方案

知道了原因之后,解决方案也就出来了,就是将SwiftUI.framework系统库改为可选。目前有两个解决方案:
方案一:
Build Phases选项卡中的 Link Binary With Libraries 里面添加 SwiftUI.framework,然后将Status改为Optional。


方案二:
Build Settings 选项卡中的 Other Linker Flags 设置里面添加 -weak_framework SwiftUI

检查配置

目前确认是跟SwiftUI.framework相关,那么该怎么去检测出的包究竟有没有将SwiftUI.framework改为可选呢?
我尝试使用 otool -L 命令将IPA里面的可执行文件的库引入进行比对。
以下是会崩溃的IPA包分析结果(部分):

/System/Library/Frameworks/SwiftUI.framework/SwiftUI (compatibility version 0.0.0, current version 0.0.0)
.......(省略)
@rpath/libswiftUIKit.dylib (compatibility version 1.0.0, current version 5504.0.0, weak) 
.......(省略)

以下是修改后没问题的IPA包分析结果(部分):

/System/Library/Frameworks/SwiftUI.framework/SwiftUI (compatibility version 0.0.0, current version 0.0.0, weak)
.......(省略)
@rpath/libswiftUIKit.dylib (compatibility version 1.0.0, current version 5100.0.0, weak) 
.......(省略)

/System/Library/Frameworks/SwiftUI.framework/SwiftUI (compatibility version 0.0.0, current version 0.0.0, weak)
很明显,将SwiftUI.framework改为Optional后会多个weak的显示。
所以,确实可以通过【otool -L 可执行文件路径】这个命令进行检查。SwiftUI.framework一行后面有weak代表已经将其设置成Optional,没有那就是没有设置。


http://www.niftyadmin.cn/n/5306724.html

相关文章

【大数据进阶第三阶段之Hive学习笔记】Hive查询、函数、性能优化

【大数据进阶第三阶段之Hive学习笔记】Hive安装-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive常用命令和属性配置-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive基础入门-CSDN博客 【大数据进阶第三阶段之Hive学习笔记】Hive查询、函数、性能优化-CSDN博客 ——…

5.3 Android BCC环境搭建(eadb版 下)

四,BCC使用示例 这里以tcplife为例,来显示TCP会话的生命周期和吞吐量统计。 4.1 进入/bcc/tools目录 root@localhost:/bcc# cd tools/ root@localhost:/bcc/tools# ls CMakeLists.txt javacalls.sh rubystat_example.txt argdist.py javacalls_e…

Linux 修改主机名称并通过主机名称访问服务器

一、命令提示符简介 当我们打开终端的时候,我们要输入命令的左边就是命令提示符,如下图,接下来介绍下他们分别代表什么含义 1、root 和 xhf 表示的是当前登录的用户名称。 2、node2 表示的当前的主机名称。 3、~ 表示的是当前的目录 4、# 表示…

如何配置 VS Code 实现 git 密码免输入

目录 问题描述尝试过的失败方法问题分析最终采用的解决方案:利用 ssh key 提供密码免输入功能安装 git windows 命令工具在windows本地生成 ssh key将公钥安装到 git 服务器第一种方法第二种方法调试方法 参考资料: 问题描述 在 Windows 上,使用 Visual…

2024年将迎来发展拐点!智能电动汽车如何引领新风向?

当前,全球汽车产业已经进入了深度变革期,智能化与新能源化的联动效应愈发明显,共同推动汽车产业迈向全新的发展周期。 12月13日,2023(第七届)高工智能汽车年会暨高工金球奖评选颁奖典礼在上海新华联索菲特…

安防监控EasyCVR视频融合/汇聚平台大华热成像摄像机智能告警上报配置步骤

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

Qt5+VS2013兼容XP方法

用Qt5VS2013编译程序默认配置会在XP运行时报"不是有效的Win32程序" 工作需要必须要XP运行 pro文件中加一句: QMAKE_LFLAGS_WINDOWS /SUBSYSTEM:WINDOWS,5.01 ------------------------------------------------------- qtbase\mkspecs\common\msvc-desktop.conf …

BERT(从理论到实践): Bidirectional Encoder Representations from Transformers【1】

预训练模型:A pre-trained model is a saved network that was previously trained on a large dataset, typically on a large-scale image-classification task. You either use the pretrained model as is or use transfer learning to customize this model to a given t…