Xcode 14.3 运行项目报错
File not found libarclite_iphonesimulator.a or libarclite_iphoneos.a
问题描述
升级到 Xcode14.3 后编译报错:
真机运行
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)
模拟器运行
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)
解决方案
方案一:下载arc文件夹 解压缩或者从旧版本 Xcode 复制并将 arc文件夹 拷贝到
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/
方案二:修改应用的最低部署版本到 iOS9.0或以上版本,使用 Cocoapods 管理第三方库的还要在 Podfile 中加入以下代码
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
config.build_settings[‘IPHONEOS_DEPLOYMENT_TARGET’] 的版本号不是固定的但必须 >= 9.0,建议跟随应用的最低部署版本
注意:修改 Podfile 文件后需要重新执行 pod install 命令使改动生效
想了解原因的小伙伴请继续往下看
原因分析
从错误信息来看,是在链接库的时候找不到静态库 libarclite_iphonesimulator.a 和 libarclite_iphoneos.a
右键 Xcode – 显示包内容 – Contents – Developer – Toolchains – XcodeDefault.xctoolchain – 右键显示包内容 – usr – lib
发现连 arc 目录不存在。
可以确定 Xcode 14.2 是能正常的编译的,猜测是 Xcode 14.3 移除了 arc 目录,于是找了台安装 Xcode 14.2 的电脑看了下,确实存在 arc 目录
从 Developer Forums 搜索相关信息,一位苹果员工给出了答复:
https://developer.apple.com/forums/thread/725300
回复大意是说(机翻):
如果你从 New > Project > iOS > app模板 创建了一个标准的 iOS 应用,然后查看构建记录,没有 libarcliite_iphoneos.a 的引用。这是因为应用程序的部署目标足够现代,它可以依赖于内置在系统中的 ARC。事实上,Xcode 14 总是如此,它支持的最小部署目标是 iOS 11。
假设你的应用程序的部署目标不低于 Xcode 支持的,那么问题就变成了:为什么你的项目试图链接 libarcliite_iphoneos.a,它绝对不需要的东西?我没有现成的答案,但这可能与你的第三方构建系统有关。我建议你通过它的支持渠道升级。
因此只需要将应用的最低部署版本改为 iOS11就能解决问题,经测试只要最低部署版本 >= iOS9 即可
评论(已关闭)
评论已关闭