IOS中armv7,armv7s,arm64以及i386和x86_64讲解

摘要:
一、前言问题在iOS开发过程中,估计比较少的人会在意armv7,armv7s,arm64这些概念,如果在意可能也是项目中出现了像下面的问题,才会想起来解决这些问题,但还是不是特别的理解,这些概念,今天写这篇博客,希望大家对这些概念有所了解。

一、前言问题

在iOS 开发过程中,估计比较少的人会在意armv7,armv7s,arm64这些概念,如果在意可能也是项目中出现了像下面的问题,才会想起来解决这些问题,但还是不是特别的理解,这些概念,今天写这篇博客,希望大家对这些概念有所了解。

IOS中armv7,armv7s,arm64以及i386和x86_64讲解第1张

上面的这个问题,是我用自己手机iPhone 7p真机运行的,关于配置如下:

IOS中armv7,armv7s,arm64以及i386和x86_64讲解第2张

如果出现上面的问题,我们在valid Architectures中加入arm64即可,就可以通过编译!!!

IOS中armv7,armv7s,arm64以及i386和x86_64讲解第3张

虽然问题可以得到解决,但是还是要了解一下armv7,armv7s,arm64以及i386和x86_64这些概念还是有所必要的。

二、讲解

1.  armv7 | armv7s | arm64是ARM处理器的指令集

2.  i386 |x86_64是Mac 处理的指令集。

下面是指令集在设备的使用

arm64:iPhoneX | iphone8 plus|iPhone8| iPhone7| iphone7 plus | iphone6s plus|iPhone6| iPhone6 plus|iPhone5S |     iPad Air| iPad mini2(iPad mini with Retina Display)

armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)

armv7:iPhone4|iPhone4S|iPad|iPad2|iPad3|iPad mini|iPod Touch 3G|iPod Touch4

i386 是针对intel通用的微处理器32位处理器

x86_64是针对x86架构64位处理器

模拟器32位处理器测试要i386的架构

模拟器64位处理器测试要x86_64的架构

真机32位处理器要armv7 或者armv7s

真机64位处理器要arm64架构

三、开发

3.1Architectures

Xcode 通过Architectures指定工程被编译成,可支持的哪些指令集类型。在这其中,支持的指令集如果越多,编译出的数据包也就会越大,对应的生成的二进制包ipa就会越大。

3.2Valid Architectures

Xcode 通过Valid Architectures来限制可能被支持的指令集范围,Xcode 最终编译出来的二进制包类型也是从这些类型产生。对于编译出哪种指令集的包,是由Architectures和Valid Architectures的交集来确定的,所以不能为空。

例如:

假如Architectures支持的arm指令集为armv7,armv7s,而对应的ValidArchitectures支持的指令集为armv7s,arm64,那么Xcode生成的二进制包指令集为armv7s。

>>>>拓展

我们创建项目中,Valid Architectures设置里,会默认为Standardarchitectures也就是armv7,arm64,如果自己想改的话,可以加入其他内容,在Other中。

通过Standardarchitectures,打包的代码有两份,一份是32位,一份是64位。在在iPhone5s或者以上( iPhone5s的cpu是64位的 )下,会运行64位代码包,但是可以兼容32位代码,但是这样会降低性能,但不会对用户体验造成威胁。

以上就是关于Xcode 中Build Settings的部分内容,希望大家对armv7,armv7s,arm64以及i386和x86_64有所了解。欢迎指正!!!

免责声明:文章转载自《IOS中armv7,armv7s,arm64以及i386和x86_64讲解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VMware三个版本号workstation、server、esxi的差别mac安装ps破解版(亲测可用)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java虚拟机详细图解9--JVM机器指令集

声明:本文摘抄自:https://blog.csdn.net/u010349169/article/details/50412126 Java虚拟机和真实的计算机一样,运行的都是二进制的机器码;而我们将.java 源代码编译成.class 文件,class文件便是Java虚拟机能够认识的二进制机器码,Java能够识别class文件中的信息和机器指令,进而执...

计算机CPU之CISC、RISC、x86、IA32、x86-64、IA64、ARM

CPU  中央处理器(central processing unit,CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。   中央处理器(CPU),是电子计算机的主要设备之一,电脑中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU是计算机中负责读取指令,对指令译码并执行指令的核心部件。中央处理器主要包括两个...

指令集 与 cpu

http://cache.baiducontent.com/c?m=9d78d513d9d437ab4f9d9e697c15c0116e4381132ba7a1020ca08448e2732d405016e3ac57530770a4d13b275fa0131aacb22173441e3df2de8d9f4aaaf3c87375cf3034074ddb1e0...

【移动安全高级篇】————3、Android系统ShellCode编写

随着Android手机的普及,Android系统安全日益受人关注。漏洞攻防是安全的一大课题,其中自然少不了shellcode的编写。本文将以提出问题、解决问题的方式教你如何编写Android系统shellcode。由于篇幅限制,本文将不对ARM指令集进行介绍,建议没有基础的读者先参考相关手册。 基础部分 使用什么工具? GNUARM汇编器as和GNUARM...

【试题汇总】图像处理职位面试题汇总(1)

Matlab编程部分 1. Matlab 中读、写及显示一幅图像的命令各是什么? 解:第一、Matlab中读图像函数是imread( )。imread 函数用于读入各种图像文件,其一般的用法为:[X,MAP]=imread(‘filename’,‘fmt’) 其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename为读取的...

在WSL中运行32位程序

今天发现在WSL中运行32位程序hmetis会报错: -bash: ./hmetis: cannot execute binary file: Exec format error 用file hmetis命令查看文件信息: hmetis: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), d...