之前每个版本的ipa包打出来都才20M出头,后来不知道从哪个版本起打的包每次都将近40M,但是工程中也没有明显的增加很大第三方类或者图
片、静态文件。于是就开始了各种瘦身计划:压缩图片,删除不必要静态库。做了一番改动后发现包只比原来小了1M多,收效甚微。后来听同事说了
armv6 armv7 armv7s arm64引起编译包翻倍增大的问题,于是就试了一下,果然ipa包又回到了以前的大小。下边来说一下关于ios这个指令集(一下内容
引子DevDiv社区jas,内容稍有修改)。
目前ios的指令集有以下几种:
- armv6
- iPhone
- iPhone2
- iPhone3G
- 第一代和第二代iPod Touch
-
armv7
- iPhone4
- iPhone4S
-
armv7s
- iPhone5
- iPhone5C
-
arm64
- iPhone5S
机器对指令集的支持是向下兼容的,因此armv7的指令集是可以运行在iphone5S的,只是效率没那么高而已~
在xcodeTARGETS里边Architectures:
Architecture : 指你想支持的指令集。
Valid architectures : 指即将编译的指令集。
Build Active Architecture Only : 只是否只编译当前适用的指令集。
================================================
现在是2014年初,其实4和4S的用户还是蛮多的,而iphone3之类的机器几乎没有了,所以我们的指令集最低必须基于armv7.
因此,Architecture的值选择:armv7 armv7s arm64
PS:选arm64时需要最低支持5.1.1:
Convert Your App to a 64-Bit Binary After Updating It for iOS 7
Xcode 5.0.1 can build your app with both 32-bit and 64-bit binaries included. This combined binary requires a minimum deployment target of iOS 5.1.1 or later. The 64-bit binary runs only on 64-bit devices running iOS 7.0.3 and later. If you have an existing app, you should first update your app for iOS 7 and then port it to run on 64-bit processors. By updating it first for iOS 7, you can remove deprecated code paths and use modern practices. If you’re creating a new app, target iOS 7 and compile 32-bit and 64-bit versions of your app.
The architecture for 64-bit apps on iOS is almost identical to the architecture for OS X apps, making it easy to create a common code base that runs in both operating systems. Converting a Cocoa Touch app to 64-bit follows a similar transition process as the one for Cocoa apps on OS X. Pointers and some common C types change from 32 bits to 64 bits. Code that relies on the NSInteger
and CGFloat
types needs to be carefully examined.
Start by building the app for the 64-bit runtime, fixing any warnings that occur as well as searching your code for specific 64-bit issues. For example:
-
Make sure all function calls have a proper prototype.
-
Avoid truncating 64-bit values by accidentally assigning them to a 32-bit data type.
-
Ensure that calculations are performed correctly in the 64-bit version of your app.
-
Create data structures whose layouts are identical in the 32-bit and 64-bit versions of your app (such as when you write a data file to iCloud).
1,如果想自己的app在各个机器都能够最高效率的运行,则需要将Build Active Architecture Only改为NO,Valid architectures选择对应的指令集:armv7 armv7s arm64。这个会为各个指令集编译对应的代码,因此最后的 ipa体积基本翻了3倍,Release版本必须NO。
2,如果想让app体积保持最小,则现阶段应该选择Valid architectures为armv7,这样Build Active Architecture Only选YES或NO就无所谓了
相关推荐
1. **架构支持**:确保在Xcode项目的“Build Settings”中,开启“Valid Architectures”选项,包括armv6、armv7、armv7s、arm64,以便覆盖所有可能的设备。 2. **库文件集成**:将libmp3lame.a添加到项目的“Link ...
ZBar是一款开源的二维码扫描库,专为iOS开发者设计,能够支持多种设备架构,包括armv6、armv7、armv7s以及arm64。本文将深入探讨ZBar在iOS开发中的具体应用及其优势。 一、ZBar概述 ZBar是由Simon Woodhead开发的...
ZBar是一款强大的开源二维码扫描库,它支持多种CPU架构,包括i386、armv6、armv7、armv7s、x86_64以及arm64。这一特性使得ZBar在iOS设备的兼容性上表现出色,无论是模拟器还是各种不同硬件版本的真机,都能流畅运行...
2. **配置架构**:在Xcode的项目设置里,确保已选中所有必要的架构(armv7, armv7s, arm64, i386, x86_64)。 3. **链接库**:添加任何必要的系统库,比如AVFoundation,因为ZBar可能依赖于它来访问摄像头。 4. **...
本文将深入探讨 OpenSSL 在 iOS 平台上的应用,特别是针对不同架构的支持,如 arm64、armv7s、armv7、x86_64 和 i386。 1. **OpenSSL 架构兼容性** OpenSSL 提供了对多种处理器架构的支持,这使得它能够在不同的...
标题和描述提到了“iOS ffmpeg 64位支持”,这意味着我们要讨论的是如何在iOS平台上,特别是在包括i386、x86_64(模拟器架构)以及armv7、armv7s和arm64(真机架构)在内的多种设备上,集成和运行FFmpeg库。...
在Xcode中,开发者可以选择"Build Settings",然后在"Architectures"部分设置"Valid Architectures"为`armv7`, `armv7s`, 和 `arm64`。同时,确保"Build Active Architecture Only"在调试时设为`YES`,在发布时设为`...
FFmpeg 2.6 支持多种架构,包括 i386、x86_64、armv7、armv7s 和 arm64。这些架构分别对应于不同的iOS设备和模拟器平台: 1. **i386**:这是32位的Intel处理器架构,主要用在旧版的iOS模拟器上。 2. **x86_64**:这...
在这个压缩包中,提供了针对不同架构的静态库,包括 arm64、armv7s、armv7、x86_64 和 i386,这些都是 iOS 设备常见的处理器架构。 1. **静态库**:静态库在编译时会被直接链接到目标程序中,形成一个完整的可执行...
在标题"libiconv.dylib (x86_64 arm64 armv7 armv7s)"中,我们可以看到这个库支持多种处理器架构,包括x86_64(适用于模拟器),arm64(适用于64位设备如iPhone 5S及以上),以及armv7和armv7s(适用于32位设备如...
总之,"libopencore-amrnb.a"和"libopencore-amrwb.a"是用于处理AMR音频格式的OpenCORE库,适用于苹果的iOS设备,特别是那些支持armv7、armv7s和arm64架构的设备。随着苹果对64位应用的强制要求,这些库对于开发兼容...
编译FFmpeg为iOS平台需要考虑不同架构的支持,如armv7、armv7s、arm64,以及在Xcode模拟器运行时所需的x86_64和i386。编译过程中可能涉及CMake或autoconf工具,以及配置特定的编译选项以适应iOS的SDK和Cocoa Touch...
标题提到的是FFmpeg 2.5.3 版本的iOS静态库,这个版本适用于多个iOS设备架构,包括armv7、armv7s、i386、x86_64以及arm64。静态库的好处是将所有依赖项都包含在内,使得在不同设备上运行时无需担心依赖问题。 1. **...
本压缩包中的静态库是专门为 iOS 设备编译的,包含了多个架构的支持,包括 arm64(适用于64位的iPhone和iPad)、armv7s(针对某些特定的32位设备)、armv7(广泛支持的32位架构)、x86_64(用于iOS模拟器)以及 i386...
值得注意的是,此压缩包包含了针对不同架构的库文件,包括arm64(适用于64位ARM设备),armv7和armv7s(适用于32位ARM设备),i386和X86_64(适用于模拟器)。这意味着这个库支持所有主流的iOS设备和开发环境。 在...
2.4.2 版本是 FFmpeg 的一个历史版本,对于 iOS 平台,它提供了针对不同架构的支持,包括 armv7、armv7s、i386、x86_64 和 arm64。这些架构涵盖了从较旧的 iPhone 和 iPad 到最新的 64 位设备。 1. **FFmpeg 架构...
armv7是早期iPhone和iPad使用的处理器架构,armv7s针对更快的处理器进行了优化,而arm64则是iPhone 5s及后续设备采用的64位架构。Xcode 7的编译确保了这个静态库可以兼容至少iOS 7.0及以上版本的操作系统。 在实际...
在iOS平台上,FFmpeg 2.8 版本的静态库适用于多种处理器架构,包括armv7、armv7s、i386、x86_64以及arm64。这些不同的架构覆盖了从旧款iPhone到新款iPhone以及模拟器的全面支持。 首先,让我们深入了解一下FFmpeg的...