iOS打包ipa
iOS打包,无论是从平时的测试包,还是提交AppStore的正式包,或者企业包,每个开发都离不开打包。回想一下当初刚刚做开发时候还不知道如何将.app打包成ipa文件,感觉too young too simple。鉴于最近进化之地2的上线,让我又想起了该游戏的剧情,那么我现在也结合自己的经历,来说说自己的iOS打包史吧。
手动build时代
刚刚工作的时候,也是没见过什么世面,在加上组内就我一个做iOS的,也没什么人可以交流,所以在打包这块,一直都是手动打包。我们知道iOS应用在普通build的时候产生的是.app,我们要提交测试的时候,需要选择好真机设备,通过Command+shift+I,进行一次Release build。之后在XCode的左侧项目导航栏的Products中右键XXX.app,选择show in Finder,然后再退到上一级目录,进入Release-iphoneos,中看到了XXX.app以及对应的符号表文件。
接下来就是把.app变成ipa的奇迹时刻了,当然这里有很多旁门左道。
- 新建一个文件夹名称叫"Payload",并且将.app拷贝到这个文件夹下面,压缩文件夹,修改后缀名为.ipa即可大功告成
- 将.app拖入itunes中,在itunes的应用中找到对应的app,再点击app拖出到桌面即可(目前itunes已经没有应用程序这一栏,该方法已不可用)
- XCode7及以前时代,可以通过Alcatraz给XCode安装AMAppExportToIPA插件,安装完在XCode的左侧项目导航栏Products中,右键XXX.app后,选择Export IPA即可。当然在这之前,需要修改scheme中的build configuration为Release。
这样大概就是之前打测试包的流程,全手工打造,无任何杂质。之后跟其他部门的同事交流了一下,发现可以通过命令行打包,于是就进入了下一个时代。
命令行打包时代
相信大家对于Makefile并不陌生,在学习Linux的时候就接触过,但是总是觉得设置make脚本很麻烦,况且当时都是基本上都是几个源文件的工程,而现在到了iOS打包,工程目录那么多,依赖库也不少,自己手写Makefile那不得累死。其实自己当时完全多虑了,XCode提供的命令行工具,几乎解决了所有能想到的问题,那么就开始打包吧。
- 首先执行Release Build
xcodebuild -project XXX.xcodeproj -sdk iphoneos -configuration Release;
这样就完事了,是不是so easy。
- 然后在工程根目录下找到./build/elease-iphoneos/目录,将XXX.app找到放到Payload目录下,通过zip命令生成ipa。
- 接着就是把ipa和符号表文件放到一个你想放到的目录下就好了。
打包就这么简单,不过这里面还有打包的命名,我们是通过应用名-版本号-日期-build号来命名的。
下面是打包的源码(XXX为工程名,我们代码管理是通过svn,所以REVISION获取的是svn版本号)。
BASE_NAME=XXX
MAIN_VERSION=4.1.0
DATE=$(shell date +%Y%m%d)
REVISION = $(shell svn info ./|grep "Last Changed Rev: "|cut -c 19-)
VERSION