草庐IT

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

crasowas 2023-09-08 原文

文章目录


前言

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

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

苹果员工回复截图:

那么这篇文章要讨论的问题来了,上述报错的解决方案网上一搜一大堆,但是手头却没有这么低系统版本的真机或模拟器来测试。真机刷低版本系统是不可行的,苹果早就关闭了这么低版本的刷机验证,模拟器目前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版本解决,对于已经处理过的可以移除之前的处理方法。具体请看苹果开发者论坛或苹果员工新回复截图。

苹果员工新回复截图:

开发环境

  • 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不就可以通过正常途径下载低版本的模拟器文件。

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文件解压后安装会提示不兼容:

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

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

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

可是问题到这真的解决了吗?实测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了😣。

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

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

解决方案

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

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

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

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

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

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

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

sudo spctl --master-disable

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

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

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

这个问题不用在意哈,电脑重启后会消失,就算是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,我猜你的系统版本应该也不低,不然也不会遇到这个问题,嘿嘿!

最后

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

有关iOS问题记录 - Xcode 14安装低版本iOS模拟器的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  3. ruby - 完全离线安装RVM - 2

    我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

  4. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  5. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  6. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  7. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  8. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  9. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  10. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

随机推荐