iOS开发小记—Shell脚本打包

iOS 89 2017-11-07 23:09

在iOS开发中,我们经常需要上传ipa包。公司配置的电脑打包速度很慢(看机子和项目大小,反正公司配的苹果盒子很慢,而且每一步都要手点),打包时基本不能做任何其他事情(很卡),极大的浪费了时间。偶然间听说了shell脚本可以帮我们很方便的解决这个问题,看了一篇文章之后,特此记录一下shell打包的流程以及中间遇到的坑。


准备工作

  1. 准备要打包的项目,在苹果开发者网站上下载打包用到的证书,这里打测试包作为演示,就下载adhoc 证书进行测试。下载adhoc 证书并运行,然后在项目中选中Targets->General->Signing ,勾选Automatically manage signing,把team选为该证书对应的开发者账号。
  2. 下载ReleaseDir,将ReleaseDir文件夹,放到跟所要打包的项目的根目录(ShellPackageDemo)同级别的目录下。
  3. 打开ReleaseDir文件夹中的ExportOptions.plist文件,这里的四个选项是对包的设置。
**  ExportOptions.plist文件参数说明 **
compileBitcode:不上架App Store,Xcode是否启用Bitcode重新编译,默认为YES。
method:归档类型,包括app-store、ad-hoc、package、enterprise、development以及developer-id。
uploadBitcode:上线App Store是否开启Bitcode,默认为YES。
uploadSymbols:上线App Store,是否开启符号序列化,这是与查crash相关的,默认为YES。

因此我们对ExportOptions.plist做如下设置:

iOS开发小记—Shell脚本打包-JEESNS
ExportOptions设置截图.png

重点:在使用下列方法前,请先使用Xcode成功打包一次。(具体原因现在不明)

调用方法

1.打开终端,cd至ReleaseDir下。假如电脑之前装了cocoapods(其他有切换过ruby环境的操作也算),请先在终端运行rvm use system将ruby切成系统的。
2.根据项目具体情况在终端运行下列对应的命令
./release.sh shellPackageDemo -w -e -v 1.0.0 -b 1.0.0 //使用了cocoapods
./release.sh shellPackageDemo -e -v 1.0.0 -b 1.0.0 //未使用cocoapods

调用格式:
参数说明:
<Project directory name>    第一个参数:所要打包的项目的根目录文件夹名称         
-w                          workspace打包,不传默认为project打包
-s <Name>                   对应workspace下需要编译的scheme(不传默认取xcodeproj根目录文件名)
-e                          打包前是否先编译工程(不传默认不编译)
-d                          工程的configuration为 Debug 模式,不传默认为Release
-a                          打包,Version版本号自动+1(针对多次打测试包时的版本号修改)
-b <Build Num>              Build版本号,指定项目Build号
-v <Version Num>            Version版本号,指定项目Version号
参数-a 与 -v 互斥,只能选择传其中之一

演示demo未使用cocoapods,因此运行
./release.sh shellPackageDemo -e -v 1.0.0 -b 1.0.0

得到ipa包

运行结果截图:

iOS开发小记—Shell脚本打包-JEESNS
终端运行结果截图.png

iOS开发小记—Shell脚本打包-JEESNS
releaseDir目录截图.png

参考链接:Shell脚本——Xcode脚本打包

文章评论