ios xcode Architectures

news2024/11/16 19:30:12

各个Architecture参数的含义

Architectures

当前设备环境下支持的指令架构。真机环境下是armV7、arm64。模拟器环境下是X86_64、i386、arm64(m1设备)。

Build Active Architecture Only

是否只编译当前设备的指令架构。值是YES或者NO。一般Debug环境下,为了提高编译速度,会选择YES,表示只编译当前设备的指令架构。Release环境下,选择NO,编译所有类型设备的指令架构。

Excluded Architecture

排除的架构。排除的架构将不参与编译。例如:这里选择了arm64,编译产物将不会包含arm64指令架构。

VALID_ARCHS

用户自己设置的可用架构。这个选项在User-Defind里面,它的优先级是最高的。如果Architectures支持了很多架构,但是VALID_ARCHS只填写了一小部分,那么实际上支持的架构也是这一小部分。所以VALID_ARCHS的值一般和Architectures保持一致。

EXCLUDED_ARCHS

在Xcode12的release note中,VALID_ARCHS已经不推荐使用了(deprecate),我们应该使用EXCLUDED_ARCHS

这个EXCLUDED_ARCHSExcluded Architecture是同一个意思,所以我们使用Excluded Architecture就好了。

当然,你继续使用VALID_ARCHS也没有什么问题。测试发现,修改VALID_ARCHS仍然会影响编译结果。

iOS设备支持的指令架构

armv6
iPhone, iPhone 3G, iPod 1G/2G

armv7
iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini

armv7s
iPhone 5, iPhone 5c, iPad 4

arm64
iPhone X,iPhone 8(Plus),iPhone 7(Plus),iPhone 6(Plus),iPhone 6s(Plus), iPhone 5s, iPad Air(2), Retina iPad Mini(2,3)

arm64e
iPhoneX及以上新机型

x86_64
对应64位电脑处理器的模拟器

i386
对应32位电脑处理器的模拟器

注意💡:

1、从Xcode12开始,如果你是m1设备,模拟器也支持arm64指令集。
2、不管是arm64还是arm64e,这些称呼都是ABI(Application Binary Interface),编译后对应的指令集架构(Instruction Set Architecture)都是armV8.X系列。

如何分离SDK指令架构

有些第三方SDK包,除了包含真机的arm架构外,还包含了模拟器的架构,对于这种类型的SDK包,是不允许提交AppStore的:

 

要解决这个问题,我们需要将SDK里的模拟器指令架构剥离。

下面列举了操作.a文件指令集的常用命令

查看.a文件支持的指令集:

lipo -info xxx.a
复制代码

合并两个.a文件:

lipo -create xxx.a ooo.a -output hebing.a
复制代码

移除某个指令集:

lipo -remove i386 xxx.a -output noi386.a
复制代码

抽取某个指令集:

lipo -thin arm64 xxx.a -output onlyArm64.a
复制代码

假设AipBase.a文件包含了i386 x86_64 armv7 armv7s arm64指令架构,我们需要将其中的armv7、arm7s、arm64架构分离:

1、新建三个文件夹

mkdir armv7

mkdir armv7s

mkdir arm64
复制代码

2、单独抽离指令架构

lipo ../AipBase.framework/AipBase -thin armv7 -output ./armv7/AipBase

lipo ../AipBase.framework/AipBase -thin armv7s -output ./armv7s/AipBase

lipo ../AipBase.framework/AipBase -thin arm64 -output ./arm64/AipBase
复制代码

3、将多个指令架构合并

lipo -create ../armv7/AipBase ../armv7s/AipBase ../arm64/AipBase -output ../AipBase.framework/AipBase
复制代码

4、再次检查合并后的指令架构是否符合你的要求

lipo -info ../AipBase.framework/AipBase

总结

再次回到开始说的问题:Could not find module 'xxxxxxx' for target 'arm64-apple-ios-simulator

1、如果你此时准备在arm64模拟器上运行,这说明你的编译产物没有arm64指令集支持,检查Buind Setting中Excluded Architecture是否把 arm64 的支持去掉了。

2、如果你并没有在arm64模拟器上运行,你只是在运行某些检测工具,这说明工具在帮你使用arm64模拟器环境测试你的代码。鉴于你不想在arm64模拟器上运行代码,你可以取消模拟器的arm64支持。

 

参考

整理一下脑子里混乱的Architectures - 掘金

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/107878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是数据管理?看完这篇你一定有收获

如今的大数据成为一切生产经营活动的主要驱动因素。由于每天都会产生大量数据,因此我们需要有更好的数据管理解决方案是理所当然的。任何想要在今天取得成功的企业或企业都需要了解数据管理的内容、原因和方式。 大数据,就其本质而言,需要一…

SI/PI仿真概述:有源高速信号、阻抗、滤波方案分析

SI/PI仿真概述 Signal Integrity与Power integrity是当今高速电子产品系统及PCB设计必须保证的两大因素,SI/PI直接决定系统信号、电源质量从而影响数据的正确传输与系统误码率。如何在设计方案阶段评估及模拟SI/PI,就需要借助专业EDA工具进行仿真分析。…

Vue3基础语法(三)

文章目录认识计算属性案例methods vs computedsetter getterwatch侦听器的基本配置其他方式综合案例认识计算属性 案例 插值语法实现: 以上代码不好维护,多次使用会出现重复代码 methods实现: computed实现案例 methods vs computed sett…

【深度思考】如何优雅的校验参数?

在日常的开发工作中,为了保证落库数据的完整性,参数校验绝对是必不可少的一部分,本篇文章就来讲解下在项目中该如何优雅的校验参数。 假设有一个新增学员的接口,一般第一步我们都会先校验学员信息是否正确,然后才会落…

为什么硬盘在macbook上无法编辑?mac不能往移动硬盘拷东西

为什么硬盘在macbook上无法编辑?如果您只想在Mac上查看NTFS文件,只需将NTFS 外置存储设备连接到mac电脑并查看文件。但要编辑或传输文件,则需要NTFS工具。 NTFS文件格式与Mac不兼容,但许多用户仍然喜欢使用NTFS文件,而…

Xshell及Xftp安装配置实现对Linux的远程登录

为什么要远程登录? Linux服务器是小组共享的 正式上线的项目是运行在公网上的 具体的结构图如下图所示: 准备工作 注意,商业用途的Xshell和Xftp是需要收费的,因此,我们下载免费的个人版本即可。 登录官网&#x…

:沉寂6个月,高薪不再是梦,这一次,我赢了......

前言 六个月对于人的一生来说是极其短暂的,有的人迷迷糊糊、浑浑噩噩的就过去了,有的人让其虚度在游戏中,有的人在不喜欢的岗位上日复一日。 但,总有一部分人会选择用来提升自己、或是探索未知领域掌握新的技能,而我…

Promise难懂?一篇文章让你轻松驾驭

前言 前端js学习中,让大家最难受的就是异步的问题,解决异步、回调地狱等问题时你必须得学会promise,对于多数前端程序员来说promise简直就是噩梦,本篇文章就是从通俗易懂的角度做为切入点,帮助大家轻松掌握promise 异步…

如何使用报表工具FastReport VCL 设计器中的 PDF/A?

Fastreport是目前世界上主流的图表控件,具有超高性价比,以更具成本优势的价格,便能提供功能齐全的报表解决方案,连续三年蝉联全球文档创建组件和库的“ Top 50 Publishers”奖。 慧都科技是Fast Reports在中国区十余年的友好合作…

0基础学python容易吗?零基础学习路线目标

零基础Python学习路线及阶段学习目标,首先应该夯实Python核心基础、Web前端编程、Django开发框架、Flask开发框架、爬虫与数据分析等知识,理解机器学习相关的基本概念及系统处理流程。 零基础Python学习路线及阶段学习目标: 阶段一、Python核…

【React学习】React更新渲染原理

当我们调用 setState 之后发生了什么?react经历了怎样的过程将新的 state 渲染到页面上? 一次react更新,核心就是对虚拟dom进行diff,找出最少的需要变化的dom节点,然后对其进行相应的dom操作,用户即可在页…

亲子游小程序开发,助力商家掌握亲子流量

随着新生代父母越来越年轻化,育儿观念上也发生了很大改变,当代父母已经不在单纯的关注孩子的学习情况,学习固然重要但是孩子的身心健康也是非常重要的。所以很多父母开始带着自己的孩子参加各种各样的亲子活动,多参加亲子活动可以…

Python数据分析之Pandas库

Python数据分析之Pandas库一、Pandas简介二、Pandas库的安装三、Pandas的数据结构四、Series 和 DataFrame 数据结构的使用五、其他可以参考的网站一、Pandas简介 Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于200…

Struts2框架中的Action接口和ActionSupport类

Struts2框架中的Action接口和ActionSupport类1、Action接口2、ActionSupport类3、登录案例3.1、页面3.2、控制器3.3、struts.xml配置3.4、测试1、Action接口 Action是Struts2框架的核心,因为它们适用于任何MVC(Model View Controller)框架。…

【Maven基础】单一架构案例(二)

第三节 搭建环境&#xff1a;事务控制 1、总体思路 2、TransactionFilter 2.1、创建 Filter 类 2.2、TransactionFilter 完整代码 public class TransactionFilter implements Filter {// 声明集合保存静态资源扩展名private static Set<String> staticResourceExtNam…

长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的实践技术应用

【查看原文】长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的实践技术应用 植被是陆地生态系统中最重要的组分之一&#xff0c;也是对气候变化最敏感的组分&#xff0c;其在全球变化过程中起着重要作用&#xff0c;能够指…

云知声: 基于 JuiceFS 的超算平台存储实践

云知声从一家专注于语音及语言处理的技术公司&#xff0c;现在技术栈已经发展到具备图像、自然语言处理、信号等全栈式的 AI 能力&#xff0c;是国内头部人工智能独角兽企业。公司拥抱云计算&#xff0c;在智慧医疗、智慧酒店、智慧教育等方面都有相应的解决方案。 Atlas 是云知…

技术栈入门------RabbitMQ

Direct交换机是路由键精准匹配 Fanout交换机是不看路由键 &#xff0c;只要你消息发给了某个交换机&#xff0c;这个交换机就立马把消息转给绑定了这个交换机的所有队列&#xff0c;所以速度最快 Topic交换机可以把一个消息根据交换机和消息队列的绑定的路由键进行匹配&#xf…

没有二十年功力,写不出Thread.sleep(0)这一行“看似无用”的代码!

你好呀&#xff0c;我是喜提七天居家隔离的歪歪。 这篇文章要从一个奇怪的注释说起&#xff0c;就是下面这张图&#xff1a; 我们可以不用管具体的代码逻辑&#xff0c;只是单单看这个 for 循环。 在循环里面&#xff0c;专门有个变量 j&#xff0c;来记录当前循环次数。 第…

项目实战之旅游网(一)项目介绍 项目搭建

目录 一.项目介绍 1.功能介绍 2.技术选型 3.实体类 二.项目搭建 1.创建项目 2.adminLTE 3.编写后端首页 4.提取统一后台模板 5.重构后台首页 ************************************************************************* 项目代码地址&#xff1a;等写完这个项目我…