`
fanfanlovey
  • 浏览: 73698 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

IOS学习——Armv

    博客分类:
  • IOS
阅读更多
1.各机子支持
对于IOS而言,模拟器并不运行arm的指令集,编译运行的是x86指令集。只有在IOS设备上,才会执行设备对应的arm指令集
armv6(废弃):iPhone, iPhone2, iPhone 3G,第一代、第二代iPod Touch
armv7(32位)设备:iPhone 3GS, iPhone 4, iPhone 4S
                    iPad , iPad 2,  the new ipad,ipad mini

                    iPod Touch 3G, iPod Touch 4
armv7s(32位):iPhone 5  iPhone 5c,ipad4
armv8(64位):iphone 5s 、iPad Air, Retina iPad Mini iphone6,iphone plus


2.Xcode中关于armv设置参数
Architecture
指定了工程将被编译成支持哪些指令集,支持指令集是通过编译生成对应的二进制数据包实现的,如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,造成最终编译的包很大
Valid architectures
指定可支持的指令集,该列表和Architectures列表的交集,将是Xcode最终生成二进制包所支持的指令集,比如:你的Valid Architectures设置的支持arm指令集版本有:armv7/armv7s/arm64,对应的Architectures设置的支持arm指令集版本有:armv7s,这时Xcode只会生成一个armv7s指令集的二进制包。
Build Active Architecture Only
用于设置是否只编译当前使用的设备对应的arm指令集。当该选项设置成YES时,你连上一个armv7指令集的设备,就算你的Valid Architectures和Architectures都设置成armv7/armv7s/arm64,还是依然只会生成一个armv7指令集的二进制包。当然该选项起作用的前提是你的Xcode必须成功连接了调试设备。如果你没有任何活跃设备,即Xcode没有成功连接调试设备,就算该设置项设置成YES依然还会编译Valid Architectures和Architectures指定的二进制包。通常情况下,该编译选项在Debug模式都设成YES,Release模式都设成NO


3.选择armv
如果你的软件对安装包大小非常敏感,你可以减少安装包中的指令集数据包,而且这能达到立竿见影的效果。我们的项目之前支持的指令集是armv7/armv7s,后来改成只支持armv7后,比原来小了10MB左右。目前AppStore上的一些知名应用,比如百度地图、腾讯地图通过反汇编工具查看后,也都只支持armv7指令集。根据向下兼容原则,armv7指令集的应用是可以正常在支持armv7s/arm64指令集的机器上运行的。不过对于armv7s/arm64指令集设备来说,使用运行armv7应用是会有一定的性能损失,不过这种损失有多大缺乏权威统计数据,个人认为是不会影响用户体验的,
Xcode 5编译的程序包含了32位和64位两套二进制代码,在32位的iOS系统上会调用32位的二进制代码,在64位系统上会调用64位的二进制代码,以此来解决向后兼容的问题。同时,考虑到很多32位的程序可能在没有重新编译的情况下部署到64位系统上,64位的iOS系统中带有两套FrameWork,一套是32位的,一套是64位的。当64位的iOS系统运行原来的32位程序时,系统会调用32位的FrameWork作为底层支撑,当系统运行64位程序时,系统会调用64位的FrameWork作为底层支撑。也就是说,当一个iPhone 5S上同时运行32位程序和64位程序时,系统同时将32位和64位两套FrameWork载入了内存中,所以消耗的内存也比较多。如果一台64位的iOS设备上运行的所有程序都是为64位系统编译过的,iOS系统将只载入64位的FrameWork,这将节省好多内存。所以,如果大家都可以快速将程序传换成64位的,iOS将跑得更快。真的是“大家好才是真的好”。

4.苹果官方建议
64位的ios运行在ios7.0.3上面,如果你有一个应用,应该尽快更新到ios7,如果有新的应用,应该选择ios7为最低要求,32位、64位混合编译
Xcode4.5起不再支持armv6
最迟2月1号之前,所有新的应用必须支持64位编译
分享到:
评论

相关推荐

    FFmpeg-4.3.3-iOS-9.0-Lite.zip

    这个版本针对iOS设备的三种主要架构——armv7、arm64和x86_64进行了适配,确保了在不同类型的iOS设备上都能正常运行。 FFmpeg 4.3.3 是该框架的一个稳定版本,它带来了许多新特性和性能改进。在这个版本中,开发者...

    ios openssl静态库 (libssl.a和libcrypto.a) 基于最新的1.0.2m

    本文将详细介绍如何在iOS项目中使用基于OpenSSL 1.0.2m版本的静态库——libssl.a和libcrypto.a,以及如何处理不同架构的兼容性问题。 首先,`libssl.a`和`libcrypto.a`是OpenSSL的静态链接库,分别包含了SSL和加密...

    zstd压缩 unity库ios&macOS

    《深入理解ZSTD压缩库在Unity中的应用——iOS与macOS平台实践》 在现代软件开发中,数据压缩技术扮演着至关重要的角色,它能够有效减小文件体积,提高存储和传输效率。其中,ZSTD(Zstandard)压缩库因其高效、快速...

    IOS 静态库打包流程简化详细介绍

    在iOS开发中,静态库是一种常见的组件化方式,它允许开发者将特定的功能模块打包成一个独立的库,供其他应用或SDK使用。...通过学习和理解这一过程,开发者可以更好地管理和维护自己的iOS组件,提升开发效率。

    libSubstrate.dylib + libSubstrate.h

    3. **armv7/arm64**: 这表示CydiaSubstrate支持两种不同的CPU架构——armv7和arm64。armv7是早期iOS设备的处理器架构,而arm64则是较新设备(如iPhone 5s及之后的型号)采用的64位架构。这意味着libSubstrate可以...

    iphone-static-library-project工具类源码_ios源码

    《iOS静态库项目模板——深入理解与应用》 在iOS开发中,静态库(Static Library)是一种常见的代码复用方式,它将多个源文件编译链接成一个单一的库文件,可供其他应用程序直接引用。本资源"iphone-static-library...

    PlausibleDatabase.framework

    5. **兼容性**:除了支持arm64架构,PlausibleDatabase.framework也兼容其他常见的iOS设备架构,如armv7和i386,确保应用在不同设备上的兼容性。 二、使用方法 1. **集成**:将PlausibleDatabase.framework引入到...

    移动平台视频开发工具.docx编程资料

    - **ijkplayer-exo**:提供了一个额外的MediaPlayer实现——`IjkExoMediaPlayer`,允许开发者在标准的ExoPlayer基础上集成ijkplayer的功能,增加播放器的选择性和灵活性。 - **ijkplayer-java**:包含了核心的Java ...

    ijkplayer 最新rtsp .ts so库

    ijkplayer是一款开源的媒体播放器,它源自中国著名的视频流媒体解决方案公司——Bilibili。ijkplayer被设计为跨平台的播放器,支持Android和iOS系统,能够处理各种媒体格式,包括RTSP协议的TS流。TS(Transport ...

    unidbg.zip

    在现代的计算机科学领域,尤其是在逆向工程、软件安全分析以及调试工作中,有一个强大的工具是必不可少的——unidbg。unidbg是一个开源的、跨平台的动态二进制调试器,其核心功能包括模拟JNI(Java Native Interface...

Global site tag (gtag.js) - Google Analytics