论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
移动端开发
›
IOS
›
iOS标题记录 - Xcode 14.3版本运行项目报错
iOS标题记录 - Xcode 14.3版本运行项目报错
大连密封材料
金牌会员
|
2024-10-17 04:41:23
|
显示全部楼层
|
阅读模式
楼主
主题
740
|
帖子
740
|
积分
2220
前言
看到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目录:
既然是因为找不到库导致的标题,那我复制arc目录到Xcode 14.3版本中是否可行呢?实测可行,不管是模仿器还是真机,运行一切正常。不过,既然Xcode决定移除这个arc目录,阐明这个可能真的已经逾期,难道以后都不需要再链接这些库用于支持ARC?
找到Xcode 14.3的发布阐明,翻了翻并没有看到有关这方面的阐明。看来只能去苹果开辟者论坛找找看,搜刮报错信息找到相干的标题,一位苹果员工给出了复兴:
这个复兴简朴概括起来就是说,因为系统已经内置有ARC相干的库,所以没必要再额外链接,至少Xcode 14支持的最低摆设目标iOS 11及以上版本的系统肯定是没标题的。假如应用摆设目标不低于iOS 11还出现标题,那么应该是第三方库的摆设目标有标题。
现在Xcode 14.3移除arc目录的缘故原由已经很清晰,是因为支持的最低摆设版本的系统都已经内置了ARC相干的库。假如应用最低摆设目标版本自己不低于iOS 11,解决这个标题很简朴,只需要将第三方库摆设目标的iOS版本设置成和应用最低摆设目标的iOS版本一致。
在我的项目中,应用最低摆设目标是iOS 11.0版本:
在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
复制代码
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
大连密封材料
金牌会员
这个人很懒什么都没写!
楼主热帖
rk3399pro移植openharmony3.0移植笔记2 ...
Postgres14.4(Docker安装)
Java EnumMap putAll()方法具有什么功 ...
这是啥SQL,室友看了人傻了
Kubernetes(k8s)基础概念介绍 ...
ClickHouse(02)ClickHouse架构设计介绍 ...
java结构之顺序结构
Fastjson反序列化
使用git&GitHub通过两台电脑协同作业, ...
太厉害了,终于有人能把文件上传漏洞讲 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表