前言
IOS的开发过程中,当需要给测试人员发布测试包的时候,直接使用xcode来做的效率是非常低下的。尤其是当有一点小改动需要重新出包时,那简直是个折磨的人的工作。通过一番研究后,遂决定写一系列脚本,以代替人工完成打包和发布的过程。
目前脚本已经完成,基本可以满足我目前的需求。现将其开源,托管在github上,项目地址:点击这里
思路
借助xcode所附带的“Command Line Tools”,可以通过命令行来完成IOS工程的编译和打包工作。脚本正是基于此完成的。
本套脚本分为三个部分:负责编译工程并打包的脚本ipa-build,负责生成itms-services协议文件的脚本ipa-publish,以及负责将ipa-publish脚本生成文件上传到服务器的脚本upload。
其中,由于我自己的情况是服务器端的同事给我了内部测试服务器的sftp的上传权限,所以这个upload脚本主要实现了使用sftp来上传的功能。具体可以实际情况来做修改。
关于itms-services协议的一些内容,可以参考我之前的文章:《shell脚本实现ipa一键安装(itms-services协议)》
注意:默认安装完的xcode并没有自带“Command Line Tools”,需要在xcode中选择后下载才能使用
实现
打开工程后,会发现本套脚本中包含好几个shell文件。下面对其功能做说明:
ipa-build: 编译xcode工程并生成ipa文件
ipa-publish: 生成符合itms-services协议的文件,并发布到服务器。
sendEmail: stmp发送email的脚本。(别人写的)
sftpDownloadFile: 通过sftp协议下载文件
sftpUploadFile: 通过sftp协议上传文件
updateLocalIndexHtml: 对索引文件进行处理(二进制文件,非shell脚本)
uploadItemsServicesFiles: 将itms-services协议文件上传到服务器
实际使用的脚本,只有"ipa-build"和"ipa-publish"这两个。其他文件会被ipa-publish这个脚本调用的依赖文件。其中出 了"updateLocalIndexHtml"是我用objc写的一个用来进行文本处理的编译后的二进制文件,其余均为shell脚本。
shell脚本实现,大家可以打开脚本来看一下,里面的注释算是很详细了。不需要太多说明。
其中值得一提的就是我在写sftp协议上传功能的时候,碰到了一个问题就是使用脚本来自动输入密码,也就是交互式脚本的编写。最后选择了expect来完成,因为我发现mac系统里自带了这个expect命令。
使用
在编写脚本时,我已经考虑到,要尽量使这个脚本使用起来简单方便。如果只需要打包,那么只使用ipa-build脚本即可。如果需要用itms- services协议来发布,则再运行ipa-publish脚本即可。在ipa-publish脚本中调用了upload脚本,所以upload脚本不 需要单独使用。
ipa-build脚本使用方法:
ipa-build脚本绝对路径 参数1 参数2
其中,参数1是IOS工程的根路径,是必输项。参数2可以不输入,是可选的,含义是编译时的工程configuration类型,有4种类型可选:Debug, AdHoc,Release, Distribution。默认是Release。
ipa-build脚本运行后,会在IOS工程根路径下生成名为“build”的文件夹,在这个文件夹中又有一个名为“ipa-build”的文件夹,打包所生成的最新ipa包就在其中。
ipa-publish脚本使用方法:
ipa-publish脚本绝对路径 参数1 参数2
参数1是IOS工程的根路径,是必输项。参数2是可选的,含义是当上传文件成功后是否发送email通知,y为发送,n为不发送,默认的值是不发送。
ipa-publish脚本运行后,会在“build”文件夹中生成一个以工程的targetname为名字的文件夹。其中,存放了itms-services协议所需的所有文件。脚本会将里面内容全部上传到服务器中。
注意事项
1、运行脚本需要绝对路径,不能使用相对路径。
2、脚本下载后,若要使用,有些脚本需要一些改动。
其中ipa-build脚本无须更改。可以直接使用。ipa-publish脚本需要配置一些信息后方能正常使用。
用文本打开ipa-publish脚本后,在shell开始的地方,有一段需要配置的地方,如下:
#须配置内容 start
#sftp参数设置
sftp_server=192.168.xx.xx
sftp_username=xx
sftp_password=xx
sftp_workpath="/usr/share/xx/xx/xx"
#发布应用的url地址
pulish_url="http://xx.com/xx"
#以下是邮箱的相关设置
#收件人
email_reciver=xx@xx.com
#发送者邮箱
email_sender=xx@xx.com
#邮箱用户名
email_username=xx
#邮箱密码
email_password=xx
#smtp服务器地址
email_smtphost=smtp.exmail.qq.com
#可配置内容 end
根据实际情况配置即可。
相关推荐
iOS工程自动打包脚本:ipa-build。集成xcodebuild和xcrun来编译打包xcode工程。 使用方法: ipa-build <project directory> [-c ] [-o ] [-n]c 命令行参数: -c NAME the configuration of project used to ...
Ipapy 是 iOS项目自动打包脚本1.脚本自动打包2.上传到fir.im3.发送邮件给测试人员需要安装的相关指令软件:1.python 2.72.xcode3.fir.im指令使用方法:1.安装xcode2.安装fir.im的指令,安装方法见 ...
这个是关于自动化批量打包的文档,是个人工作的总结。
为不同客户做定制化开发同一款app,功能相同,图片素材、显示的文字、配置和证书不同,每次人工替换素材和更换证书打包费时费力,所以使用python脚本实现自动化替换资源,自动化打包。 文件说明 Config.py ...
+ 6、自动打包 + 执行`$ python AutoPackage.py` + 7、打包好的文件保存在 *history* 目录下 -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心...
一,背景在实际多业务迭代开发中,持续打包是必须的工作,自动化实现是必须实现的功能,编辑脚本实现自动化打包上传指定位置。1.1,知识储备需要了解打包命令xcodebuild的基本知识二,预览效果图2.1执行脚本和选项...
此脚本为IOS自动打包生成IPA格式,有企业版开发者账号即可实现,脚本内部不用更改任何代码,下载即可食用,使用方法运行次脚本需加一个参数,此参数为工程绝对路径。
这是一个用于自动打包的Python脚本,可以直接打包ipa并生成对应的plist,然后使用企业证书进行重签名,并上传指定的七牛服务器。这所有的动作只需要在终端敲入一行命令即可解决。 ###功能流程说明 `打包ipa`-->`重...
基于shell语言的cocoapod打包脚本,需要根据自己工程目录修改,支持修改bundle ID与包名
通过build可以快速打包iOS工程,不需要等待编译了,解决了iOS项目打包ipa文件的漫长等待时间问题。
iOS自动打包脚本制作 在工程根目录下新建两个文件 destination export method enterprise signingStyle automatic stripSwiftSymbols teamID KV6556Y343 thinning method的类型为String,用来指定打包...
iOS最新混淆代码需要在AppDelegate.mm(Unity转换过来的母工程是UnityAppController.mm)中使用此Demo使用的是直接创建的项目,并非是Unity转换过来的母工程此处以AppDelegate.mm介绍,在UnityAppController.mm同理...
简介 XMake 是一个跨平台自动构建工具,支持... 解析automake、cmake的工程,并自动生成xmake的描述文件,实现无缝编译(如果这个实现成功的话,以后移植编译一些开源代码就更方便了) 标签:构建工具
iOS 静态库自动打包,使用 shellcmd 脚本如何写 # 获取脚本所在目录 filepath=$(cd "$(dirname "$0")"; pwd)"/" cd $filepath cd .. # 工程target,主要配置这个target即可 targetname="SafeToolSDK" # 工程目录...
网狐荣耀版教程十一苹果端ios的修改和打包 网狐荣耀版教程十二安卓手机端的修改和编译 网狐荣耀版教程十三手机端热更新的配置 在系统的使用与运营过程中,会有很多问题,这些教程只要认真学习,都会迎刃而解。...