前言
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 ...
其中,“iOS自动化打包脚本”是一种非常实用且高效的手段,它能够帮助开发者实现一键式批量生成不同渠道版本的应用程序包(ipa文件),极大地简化了发布流程。 #### 二、脚本功能解析 此脚本主要实现了以下几个...
Ipapy 是 iOS项目自动打包脚本1.脚本自动打包2.上传到fir.im3.发送邮件给测试人员需要安装的相关指令软件:1.python 2.72.xcode3.fir.im指令使用方法:1.安装xcode2.安装fir.im的指令,安装方法见 ...
##### 2.4 完整的打包脚本流程 实现自动化批量打包的流程如下: 1. 替换应用程序图标和启动页; 2. 修改`Info.plist`文件中的`bundleID`以及其他必要属性; 3. 使用`xcodebuild`进行编译; 4. 通过`xcrun`将编译好...
本文档介绍了一种支持Flutter及iOS混编工程的自动化打包方法,该方法结合Jenkins使用Shell脚本实现。该方法可以实现远程访问Jenkins选择打包分支和其他可选参数,点击构建,下载工程文件,执行Shell脚本, Checkout...
为不同客户做定制化开发同一款app,功能相同,图片素材、显示的文字、配置和证书不同,每次人工替换素材和更换证书打包费时费力,所以使用python脚本实现自动化替换资源,自动化打包。 文件说明 Config.py ...
+ 6、自动打包 + 执行`$ python AutoPackage.py` + 7、打包好的文件保存在 *history* 目录下 -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心...
在iOS开发过程中,有时我们需要自动化地编译iOS工程并生成APP及IPA文件,这在持续集成或批量构建应用时尤其重要。以下是如何实现这一过程的详细步骤和注意事项: 首先,你需要确保你的工程已经配置好发布(Release...
在实际应用中,Jenkins Xcode打包脚本还可以与其他服务集成,比如Travis CI、Fastlane、CocoaPods、Carthage等,以实现更复杂的自动化流程。通过这种方式,开发者可以专注于代码编写,而将繁琐的构建和发布工作交给...
一,背景在实际多业务迭代开发中,持续打包是必须的工作,自动化实现是必须实现的功能,编辑脚本实现自动化打包上传指定位置。1.1,知识储备需要了解打包命令xcodebuild的基本知识二,预览效果图2.1执行脚本和选项...
开发者可以在这个工程中查看、编辑源代码,并结合自动化脚本来实现项目构建和管理的自动化。 5. **集成与使用**: 要将这个自动化工具集成到自己的iOS项目中,开发者首先需要按照README.md的指示配置环境,然后将...
此脚本为IOS自动打包生成IPA格式,有企业版开发者账号即可实现,脚本内部不用更改任何代码,下载即可食用,使用方法运行次脚本需加一个参数,此参数为工程绝对路径。
这是一个用于自动打包的Python脚本,可以直接打包ipa并生成对应的plist,然后使用企业证书进行重签名,并上传指定的七牛服务器。这所有的动作只需要在终端敲入一行命令即可解决。 ###功能流程说明 `打包ipa`-->`重...
这个Aggregate目标将作为我们的打包脚本运行的入口。 接下来,我们需要在`TestSDKShell`的`Build Phases`中添加一个新的`Run Script Phase`,并在其中引用一个Shell脚本文件,比如`build_TestSDK_script.sh`。这个...
基于shell语言的cocoapod打包脚本,需要根据自己工程目录修改,支持修改bundle ID与包名
总结来说,Unity自动打iOS包源码是通过Unity的API和命令行工具,结合配置文件和自动化脚本,实现从Unity项目到Xcode工程的无缝转换,并自动完成证书配置、第三方库集成以及最终ipa包的生成。这极大地提高了开发效率...
总结,利用Shell脚本在终端中打包iOS工程,可以避免Xcode图形界面的编译等待,特别是在自动化部署和持续集成的场景下,这种快速打包方法更为实用。通过自定义脚本,可以实现更多定制化的打包操作,比如集成版本号...
通过以上步骤,React Native开发者可以建立一个完整的自动化打包流程,从而提高开发效率,减少手动操作出错的可能性,并确保应用的稳定发布。熟悉并掌握这些知识点,对于从事React Native混合移动开发的工程师来说,...
Unity Jenkins自动打包是一种高效的游戏开发工作流,它整合了Unity引擎和Jenkins持续集成工具,使得游戏项目的构建、测试和发布过程自动化。这种方式可以显著提高团队的生产力,减少手动错误,并确保每次构建的质量...