iOS问题记录 - Xcode 14.3版本运行项目报错

这篇具有很好参考价值的文章主要介绍了iOS问题记录 - Xcode 14.3版本运行项目报错。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

看到Xcode有新版本,没忍住点了升级,然后问题来了。

2023/06/24更新:关于Xcode 14.3版本打出来的包在iOS 13版本报错的问题,经过iOS 13.7版本真机实测,这个问题在Xcode 14.3.1版本已经修复,建议升级。Xcode 14.3.1的发布说明也提及了这个问题的修复。

2023/04/23更新:关于Xcode 14.3版本目前涉及到的三个问题,一是本篇文章的运行报错;二是打包报错,参考这篇文章iOS问题记录 - Xcode 14.3版本打包项目报错;三是打出来的包在iOS 13.1~13.7会报错(因为我手头没条件暂时未验证),参考苹果开发者论坛的帖子。

目前而言,推荐暂时用回Xcode 14.2版本,等待第三个问题修复后再升级,Xcode历史版本官方下载地址(需要登录)。 当然,到时候升级后可能还会遇到运行/打包项目报错,不过这都是小问题。如果想知道这些小问题为什么会发生,请继续阅读本篇文章。

开发环境

  • macOS: 13.3
  • Xcode: 14.3

问题描述

Xcode 14.2版本运行项目一切正常,升级到14.3版本后运行报错。

运行到模拟器的报错信息:

ld: file not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)

运行到真机的报错信息:

ld: file not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)

问题分析

从报错信息看,都是在链接库的时候因为找不到静态库(libarclite_iphonesimulator.a/libarclite_iphoneos.a)而报错。利用访达的前往文件夹功能快速来到报错信息中的目录,发现连arc目录都不存在,更不用说静态库文件。

现在可以确定的是Xcode 14.2版本肯定是正常的,那会不会是14.3版本移除了整个arc目录?找到一台还没升级到Xcode 14.3版本的电脑,在同样的路径下,果然存在arc目录:

iOS问题记录 - Xcode 14.3版本运行项目报错

既然是因为找不到库导致的问题,那我复制arc目录到Xcode 14.3版本中是否可行呢?实测可行,不管是模拟器还是真机,运行一切正常。不过,既然Xcode决定移除这个arc目录,说明这个可能真的已经过时,难道以后都不需要再链接这些库用于支持ARC

找到Xcode 14.3的发布说明,翻了翻并没有看到有关这方面的说明。看来只能去苹果开发者论坛找找看,搜索报错信息找到相关的问题,一位苹果员工给出了回复:

iOS问题记录 - Xcode 14.3版本运行项目报错

这个回复简单概括起来就是说,因为系统已经内置有ARC相关的库,所以没必要再额外链接,至少Xcode 14支持的最低部署目标iOS 11及以上版本的系统肯定是没问题的。如果应用部署目标不低于iOS 11还出现问题,那么应该是第三方库的部署目标有问题。

现在Xcode 14.3移除arc目录的原因已经很清楚,是因为支持的最低部署版本的系统都已经内置了ARC相关的库。如果应用最低部署目标版本本身不低于iOS 11,解决这个问题很简单,只需要将第三方库部署目标的iOS版本设置成和应用最低部署目标的iOS版本一致。

在我的项目中,应用最低部署目标是iOS 11.0版本:

iOS问题记录 - Xcode 14.3版本运行项目报错

Podfile文件中加上:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
    end
  end
end

这段代码的作用是先获取Pods项目(pods_project)中的目标数组(targets),然后遍历目标数组通过目标对象(target)获取构建配置数组(build_configurations),最后遍历构建配置数组修改构建配置对象中的构建设置(build_settings),将iOS 部署目标版本设为11.0

经过以上操作,实测不再报错。不过,还有疑问没解决,我手上还有老项目的最低部署目标是iOS 9版本,难道老项目只能用Xcode 14.3以下版本或复制一份arc目录到Xcode 14.3?

带着疑问,我用Xcode 14.3运行了老项目,结果一切正常!这差点给我整不会了。找到老项目中的Podfile文件,发现已经有设置第三方库部署目标的iOS版本:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
    end
  end
end

🤔️咦,难道iOS 9.0系统就已经内置了ARC相关的库?

先试试将9.0改为8.0,执行pod install命令后重新运行项目,结果报错。将8.0恢复为9.0,再做一次测试,执行pod install命令后手动修改某个库的部署目标为8.0,重新运行项目,不出意外还是报错,而且就剩刚才改过部署目标的库在报错。实测将8.0改为iOS 8的最后一个版本8.4.1还是报错。

综上,由于Xcode 14.3版本移除了ARC相关的库,从而导致一些默认部署目标是iOS 8版本的第三方库出现报错。只要最低部署目标不低于iOS 9版本,运行项目时就不会去链接ARC相关的库,也就不会出现找不到库的报错。

解决方案

  • 如果应用最低部署目标大等于iOS 9版本

Podfile文件中加上:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
    end
  end
end

11.0版本不是固定的,首先肯定要大于9.0版本,其次也不能高于应用最低部署目标版本,然后太低也可能会低于一些第三方库的部署目标版本,所以尽可能和应用最低部署目标版本保持一致即可。

2023/04/09更新:修改Podfile文件后需要重新执行pod install命令使改动生效。

  • 如果应用最低部署目标小于iOS 9版本

这种老项目应该很少了吧,如果真的是属于这种情况,又不想升最低部署目标版本,建议从以下方法任选一种:

  1. 下载arc目录解压后复制到指定目录路径:
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib
  2. Xcode使用14.3以下版本,Xcode历史版本官方下载(需要登录)

2023/04/08更新:如果用Xcode 14.3版本打包项目出现报错,可以参考这篇文章iOS问题记录 - Xcode 14.3版本打包项目报错。

补充内容(Xcode 15.0)

升级Xcode 15.0后,有个项目运行时遇到了崩溃问题:

Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)

经测试,初步可知iOS 17.0以下版本都会有这个崩溃问题。在网上搜索到了类似的问题,应该是Xcode 15.0的兼容性有点问题。

暂时不确定Xcode后续会不会修复这个问题,但是这里有一个临时解决方法,将第三方库部署目标的iOS版本提高到Xcode 15所支持的最低部署目标版本iOS 12

Podfile文件中设置:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
    end
  end
end

同时最好也将应用最低部署目标设置为iOS 12版本:

iOS问题记录 - Xcode 14.3版本运行项目报错

最后

如果这篇文章对你有所帮助,点赞👍收藏🌟支持一下吧,谢谢~


本篇文章由@crasowas发布于CSDN。文章来源地址https://www.toymoban.com/news/detail-407322.html

到了这里,关于iOS问题记录 - Xcode 14.3版本运行项目报错的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • iOS问题记录 - Xcode 14安装低版本iOS模拟器(持续更新)

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

    2024年02月15日
    浏览(36)
  • 使用Xcode 14.3 打包,在iOS13 系统上闪退问题

    Date/Time:           2023-04-21 16:49:28.3937 +0800 Launch Time:         2023-04-21 16:49:27.7110 +0800 OS Version:          iPhone OS 13.4.1 (17E262) Release Type:        User Baseband Version:    1.05.28 Report Version:      104 Exception Type:  EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception No

    2024年02月06日
    浏览(51)
  • 升级Xcode 14.3项目报错PhaseScriptExecution failed with a nonzero exit code

    经过各种折腾之后,发现是CocoaPods的问题,解决方案如下: 全局搜索 将其替换为

    2024年02月04日
    浏览(36)
  • Xcode14.3升级完项目无法运行 /XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a

    升级到14.3在真机上运行报错如下: 解决方法: 在Podfile中的最后一个end出添加下面代码   post_install do |installer|     installer.generated_projects.each do |project|       project.targets.each do |target|         target.build_configurations.each do |config|           config.build_settings[\\\'IPHONEOS_DEPLOYMENT_TARGET\\\'

    2024年02月06日
    浏览(36)
  • Xcode14.3升级完项目无法运行 /XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a

    升级到14.3在真机上运行报错如下: 解决方法: 在Podfile中的最后一个end出添加下面代码   post_install do |installer|     installer.generated_projects.each do |project|       project.targets.each do |target|         target.build_configurations.each do |config|           config.build_settings[\\\'IPHONEOS_DEPLOYMENT_TARGET\\\'

    2024年02月06日
    浏览(51)
  • Xcode 14.3升级后archive报错处理

    sent 29 bytes received 20 bytes 98.00 bytes/sectotal size is 0 speedup is 0.00rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/97f6331a-ba75-11ed-a4bc-863efbbaf80d/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]Command PhaseScriptExecution failed with a nonzero exit code 用文本打开

    2024年02月12日
    浏览(26)
  • Xcode 15 运行<iOS 14, 启动崩溃问题

    如题. Xcode 15 启动 iOS 14(没具体验证过, 我的问题设备是iOS 13.7)真机设备 出现启动崩溃 解决方案:

    2024年02月08日
    浏览(43)
  • xcode14.3更新一系列问题 1. Missing file libarclite_iphoneos.a (Xcode 14.3) 解决方法  

    Xcode升级到14.3后编译失败,完整错误日志: 原因: xcode 14.3更新后arc路径缺失导致pod的引用路径全部无法正常找到。这里需要重新创建该路径及文件即可。 解决方法: 添加缺失的文件即可,当然也有人取巧,限定导出归档的版本到iOS13规避这个问题。等待XCode14.3+的修复版本

    2024年02月12日
    浏览(27)
  • 升级到xcode 14.3相关问题(有毛病)

    目录 问题一:pod内的某些Signing Capabilities editor 问题二:File not found:         /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a 问题三: Archive 失败 问题四:ios 13启动崩溃         proj.ios_mac/Pods/Pods.xcodeproj Signing for \\\"FBSDKCoreKit-Facebo

    2024年02月05日
    浏览(27)
  • 解决 Xcode 14.3 file not found问题

    在使用 Xcode 14.3 运行应用程序时,可能会遇到文件未找到的错误。本文介绍了如何解决这个问题。

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包