之前每个版本的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就无所谓了
相关推荐
二维码扫描示例,XCode 6.1编译, 真机上面实测通过, 支持 armv6 armv7 armv7s arm64 。
FFmpeg 2.5.3 编译的静态库,在Xcode6 iOS8上编译, 已整合(arm64 armv7s armv7 x86_64 i386)。
FFmpeg 2.6.1 编译的静态库,在Xcode6 iOS8上编译, 已整合(arm64 armv7s armv7 x86_64 i386)。
最新编译的支持iOS平台的openssl静态库,支持arm v7,armv7s,arm64 Xcode7最新编译的,支持到7.0以上系统
该脚本为MacOS(x86_64,arm64),Mac Catalyst(x86_64,arm64),iOS(armv7,armv7s,arm64和arm64e),iOS模拟器(x86_64,arm64),tvOS(arm64)和OpenSSL,nghttp2和cURL / libcurl构建tvOS模拟器(x86_64)...
xcode6 0 1 ios8sdk 编译ffmpeg库 可以编译armv7 armv7s arm64 模拟器的找了好多资料没有编译通过 如果没有更新xcode和sdk 可以修改 sh文件里的SDK VERSION 修改自己的sdk版本 还有我是这三个平台我是一个一个编译的...
支持Xcode6 ,解决arm64,arm7s兼容并解决中文乱码问题 ,文件包含64位.a静态库(Architectures in the fat file: libzbar.a are: armv7 i386 x86_64 arm64)以及头文件,测试上传的,请放心下载
适用于iOS的64位ZbarSDK(armv7,amrv7s,arm64)。 引用 此存储库中的lib已针对64位设备进行了重建,但是如果您要自己构建它,则下面列出了显式步骤: =============== 首先下载Mercurial 克隆源: hg clone...
编译自opencore-amr-0.1.3,编译环境XCode6.1.1下iOS8 SDK。支持arm64 armv7s x86_64 i386 armv7。
包含了armv7,armv7s,arm64,i386,x86_64五个.a的合并,当前情况下所有模拟器和真机都适用(真机测试为4s和6) 折腾了三天弄好的,希望可以帮到有需要解码h264的朋友。 PS:添加以后只需要libz.tbd,libbz2.tbd,libbz...
lame版本为最新lame-3.99.5,在XCode6.1.1下iOS8SDK编译通过 ,支持arm64 armv7s x86_64 i386 armv7。
本项目是一个基于安卓的RTMP 推流器,RTMP播放器(秒开),还有跨平台(Win,...iOS armv7 armv7s arm64 Windows win32、x64 第三方库版本 libfaac 1.28 libfaad2 2.7 ffmpeg 3.0 libyuv newest openh264 1.6.0
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks目录下的IOSurface.framework、FileProvider.framework拷到Xcode8中相应目录下...
如题,mac终端下自动编译curl+ssl支持的.a库的脚本文件,供iOS开发使用,生成i386,x86_64,armv7,armv7s,arm64五大CPU架构的库文件(内含编译好的,可以直接使用),消息介绍看zip中的说明文件!(2015-01-14整理)分不够的mail...
Architectures in the fat file: SoundTouch/libSoundTouch.a are: armv7 armv7s arm64 i386 x86_64 执照 SoundTouch音频处理库版权所有(c)Olli Parviainen 该库是免费软件。 您可以根据自由软件基金会发布的...
报错: ./libavutil/arm/asm.S:50:9: error: unknown directive ...FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64" 再重新执行出现错误的命令: ./compile-ffmpeg.sh all 如果还报错文件不存在,直接注释就好了
最近升级了系统到Mac OS X 10.10 并且更新了XCode6.1和...Architectures in the fat file: libmp3lame.a are: armv7 armv7s i386 x86_64 arm64 参看我的博客 http://blog.csdn.net/vieri_ch/article/details/40650467
如题,mac终端下自动编译curl+ssl支持的.a库的脚本文件,供iOS开发使用,生成i386,x86_64,armv7,armv7s,arm64五大CPU架构的库文件(内含编译好的,可以直接使用),消息介绍看zip中的说明文件!(2019-11-16整理)分不够的mail...
支持armv7,armv7s和arm64体系结构(仿真器+ i386) ###库兼容性App360 iOS SDK支持所有iOS 6.0及更高版本。 它针对armv7,armv7s和arm64体系结构进行编译(对于仿真器为+ i386)。 ### Xcode 我们正在使用Xcode ...
编译FFmpeg i386(模拟器)版本、armv7版本(iPhone 3GS以上)、armv7s(iPhone5)版本,最后把这三个版本合为一个公共lib库,模拟器和真机只需要一套库文件,使用的时候只需要用到2个文件夹,分别是 lib 和 include,...