iOS问题记录 – Xcode 14安装低版本iOS模拟器

uniapp

文章目录

VGG


前言

最近客服跟我反馈说,有一个用户打开老项目的iOS App闪退,我回顾了下这项目上次发布改了啥,发现就改了一些文本和链接,这就很奇怪。到后台查了下这个用户的设备信息和应用版本,用的是手机型号是iPhone X,系统版本是iOS 11.2,以及最新版的应用。

golang

很长时间都忙着Flutter开发,这个项目确实没什么大改动的,最近最大的变化就是升级了Xcode 14,用关键词"Xcode 14 闪退"搜索,果然不是只有我遇到了这个问题。Xcode 14打出来的包在低版本系统运行时会崩溃,报错信息是Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib,在苹果开发者论坛搜索报错信息,可以看到会闪退的最高版本是iOS 12.1。

Floyd算法

苹果员工回复截图:

微信小程序下载

screenshot1

java人生

那么这篇文章要讨论的问题来了,上述报错的解决方案网上一搜一大堆,但是手头却没有这么低系统版本的真机或模拟器来测试。真机刷低版本系统是不可行的,苹果早就关闭了这么低版本的刷机验证,模拟器目前Xcode 14能下载的最低版本是iOS 12.4,真是巧妇难为无米之炊。不得不说,果子的做法我是举双手赞成的,是个开发者都不想兼容那么多老版本,对吧?但是买了手机后从不升级系统的大有人在,就问你能怎么办?

栈和队列

2022/12/10更新:Xcode 14.1版本已经修复了这个崩溃问题(Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib),自测通过Xcode 14.1打包的应用在iOS 12.0上正常运行不崩溃。如果你正准备处理这个问题则可以通过升级Xcode版本解决,对于已经处理过的可以移除之前的处理方法。具体请看苹果开发者论坛或苹果员工新回复截图。

C++ open 打开文件

苹果员工新回复截图:

瀛︿範

screenshot10

包体过大

开发环境

  • macOS 12.6
  • Xcode: 14.0.1

问题描述

Xcode 14无法安装低版本iOS模拟器,目前只支持iOS 12.4及以上。

排名

问题分析

选一个Xcode 14目前能下的模拟器安装,你就会发现下载安装后的模拟器是放在这个路径的/Library/Developer/CoreSimulator/Profiles/Runtimes,是.simruntime后缀的文件。那么我们找到低版本的模拟器文件放在这文件夹是不是就能实现安装低版本iOS模拟器了?

视觉检测

现在首先要找到iOS 11或iOS 12甚至更老的iOS 10的模拟器文件,我网上找了找并没有发现好的下载源(当然可能是我偷懒了没细找),这东西就连苹果开发者官方下载(需要登录)都是不提供的。那看来得换种方式下载,我们都知道(假装你也知道)Xcode升级后会逐渐移除老版本的模拟器,那我们装一个老版本的Xcode不就可以通过正常途径下载低版本的模拟器文件。

Dijkstra

Xcode版本和iOS版本名称大概差2,所以如果想要下载iOS 11.2模拟器,那大概要装一个Xcode 9.4.1。至于为什么不是9.0,那是因为我试过,9.0版本能下载的最高版本是iOS 10.3.1,9.4.1版本能下载的最高版本是iOS 11.3,还得是实践出真知。Xcode历史版本苹果官方提供下载,速度还是可以的,直接从苹果开发者官方下载(需要登录)搜索下载一个Xcode 9.4.1就好了,不过下载完成的xip文件解压后安装会提示不兼容:

矩阵

screenshot2

bat

这可麻烦了,总不能去装个低版本的macOS吧。还好我家底殷实(并没有),翻箱倒柜找到了一个六七年前买的mac mini,还好还没二手出掉,装的还是macOS 10.13.6,这不巧了嘛,隔空投送安装包过去安装,完美运行!Xcode 9.4.1能装下面这些版本的iOS模拟器:

约束布局

screenshot3

保研

先下载安装一个iOS 11.2模拟器,安装完成后找到/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 11.2.simruntime文件隔空投送到开发用的电脑上,同时放到相同的位置。打开Xcode可以看到iOS 11.2确实出现了,但是创建模拟器的时候却无法选择,这是怎么回事呢?

书籍

screenshot4

面试题大全

screenshot5

Charles配置

原来苹果还留了一手,在其他地方限制了版本,具体详情请看这篇文章在Xcode 12執行低版本的iOS模擬器。按这篇文章写的方法,修改Info.plist文件中的CFBundleIdentifier属性值(建议复制一份修改后再复制回去),重新打开Xcode后,已经能正常创建iOS 11.2的模拟器啦🎉!

cloud alibaba

screenshot6

自定义ava数据集

可是问题到这真的解决了吗?实测iOS 11.2的模拟器创建以后能正常跑起来,但是进到系统以后界面是卡死的,无法进行任何操作,更谈不上调试应用了。这应该又是受到限制了,既然iOS 11.2不行,那继续尝试iOS 11.4,结果还是不行,看来只能下载安装Xcode 10.1试试iOS 12版本的模拟器。Xcode 10.1版本能下载的最高版本是iOS 12.0,如果iOS 12.0还不行,Xcode版本再升就要升级macOS了😣。

STC16单片机

最终实测iOS 12.0模拟器能正常运行和调试,由此推测iOS 12.0后续的小版本应该也是支持的。

副本集

2023/01/07更新:注意,Xcode 14目前最低只能正常安装使用iOS 12.0版本的模拟器,iOS 11相关版本的模拟器虽然能安装但是无法正常使用。

GoogLeNet

解决方案

目前提供iOS 10.3(Xcode模拟器列表显示10.3.1,实际下载后是10.3)/11.4/12.0三个版本的模拟器文件下载,如果有其他版本需要或分享链接失效,请留言告诉我。分享链接如下:

vendor.js过大

注意:为了绕开Xcode限制,这些模拟器文件已经修改了Info.plist文件中的CFBundleIdentifier属性值,在原有值的后面加上了"-1",无需再修改。

敏捷流程

2022/11/20更新:增加了iOS 12.4/ 13.0/13.7版本模拟器文件下载,这些都是原版未修改的文件,如果后续随着Xcode升级不再支持这些版本,请手动修改Info.plist文件中的CFBundleIdentifier属性值,从而绕过Xcode限制。

K8s学习

下载后的文件解压后复制到/Library/Developer/CoreSimulator/Profiles/Runtimes/目录下,这时你可能会遇到以下问题:

解决方案

  1. 出现弹框,提示无法打开"iOS xx.x.simruntime",因为无法验证开发者

screenshot7

elasticsearch

同时在[系统偏好设置] -> [安全性与隐私]出现提示 [已阻止使用“iOS xx.x.simruntime”,因为来自身份不明的开发者]。
2022/12/31更新:从macOS 13开始,[系统偏好设置] 改为了[系统设置],[安全性与隐私]改为了[隐私与安全性]。

screenshot8

这时候点这个"仍要打开"是没有用的,要执行命令允许安装任何来源软件(需要输入密码):

sudo spctl --master-disable

为了安全起见,建议模拟器安装成功不弹框后,将允许"任何来源"改回"App Store"或"App Store和被认可的开发者"。

除了上面的方法,你也可以尝试使用xattr -d com.apple.quarantine 模拟器文件路径命令删除文件扩展属性com.apple.quarantine,避免安装受到限制,自测是可行的。查询文件扩展属性的命令是xattr 模拟器文件路径

  1. 出现弹框,一直提示正在验证"iOS xx.x.simruntime",无法关闭

screenshot9

这个问题不用在意哈,电脑重启后会消失,就算是Xcode 14支持的模拟器版本我也遇到过这个问题。

总结

为了解决这个问题,我下载了Xcode 9/9.4.1/10.1/12.5.1多个版本,一开始想着Xcode 12.5.1应该还可以下载iOS 11的模拟器,结果因为macOS系统的原因已经无法安装Xcode 12.5.1了。既然都已经装上Xcode 14,我猜你的系统版本应该也不低,不然也不会遇到这个问题,嘿嘿!

最后

如果这篇文章对你有所帮助,请不要吝啬你的点赞👍加星🌟,谢谢~

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注