IOS工程自动打包并发布脚本实现
文章首發(fā)地址:http://webfrogs.me/2013/02/18/ios-automation/
作者:webfrogs
轉(zhuǎn)載請(qǐng)注明出處。
前言
IOS的開(kāi)發(fā)過(guò)程中,當(dāng)需要給測(cè)試人員發(fā)布測(cè)試包的時(shí)候,直接使用xcode來(lái)做的效率是非常低下的。尤其是當(dāng)有一點(diǎn)小改動(dòng)需要重新出包時(shí),那簡(jiǎn)直是個(gè)折磨的人的工作。通過(guò)一番研究后,遂決定寫(xiě)一系列腳本,以代替人工完成打包和發(fā)布的過(guò)程。
目前腳本已經(jīng)完成,基本可以滿足我目前的需求。現(xiàn)將其開(kāi)源,托管在github上,項(xiàng)目地址:點(diǎn)擊這里
思路
借助xcode所附帶的“Command Line Tools”,可以通過(guò)命令行來(lái)完成IOS工程的編譯和打包工作。腳本正是基于此完成的。
本套腳本分為三個(gè)部分:負(fù)責(zé)編譯工程并打包的腳本ipa-build,負(fù)責(zé)生成itms-services協(xié)議文件的腳本ipa-publish,以及負(fù)責(zé)將ipa-publish腳本生成文件上傳到服務(wù)器的腳本upload。
其中,由于我自己的情況是服務(wù)器端的同事給我了內(nèi)部測(cè)試服務(wù)器的sftp的上傳權(quán)限,所以這個(gè)upload腳本主要實(shí)現(xiàn)了使用sftp來(lái)上傳的功能。具體可以實(shí)際情況來(lái)做修改。
關(guān)于itms-services協(xié)議的一些內(nèi)容,可以參考我之前的文章:《shell腳本實(shí)現(xiàn)ipa一鍵安裝(itms-services協(xié)議)》
注意:默認(rèn)安裝完的xcode并沒(méi)有自帶“Command Line Tools”,需要在xcode中選擇后下載才能使用
實(shí)現(xiàn)
打開(kāi)工程后,會(huì)發(fā)現(xiàn)本套腳本中包含好幾個(gè)shell文件。下面對(duì)其功能做說(shuō)明:
ipa-build: 編譯xcode工程并生成ipa文件 ipa-publish: 生成符合itms-services協(xié)議的文件,并發(fā)布到服務(wù)器。 sendEmail: stmp發(fā)送email的腳本。(別人寫(xiě)的) sftpDownloadFile: 通過(guò)sftp協(xié)議下載文件 sftpUploadFile: 通過(guò)sftp協(xié)議上傳文件 updateLocalIndexHtml: 對(duì)索引文件進(jìn)行處理(二進(jìn)制文件,非shell腳本) uploadItemsServicesFiles: 將itms-services協(xié)議文件上傳到服務(wù)器實(shí)際使用的腳本,只有"ipa-build"和"ipa-publish"這兩個(gè)。其他文件會(huì)被ipa-publish這個(gè)腳本調(diào)用的依賴文件。其中出了"updateLocalIndexHtml"是我用objc寫(xiě)的一個(gè)用來(lái)進(jìn)行文本處理的編譯后的二進(jìn)制文件,其余均為shell腳本。
shell腳本實(shí)現(xiàn),大家可以打開(kāi)腳本來(lái)看一下,里面的注釋算是很詳細(xì)了。不需要太多說(shuō)明。
其中值得一提的就是我在寫(xiě)sftp協(xié)議上傳功能的時(shí)候,碰到了一個(gè)問(wèn)題就是使用腳本來(lái)自動(dòng)輸入密碼,也就是交互式腳本的編寫(xiě)。最后選擇了expect來(lái)完成,因?yàn)槲野l(fā)現(xiàn)mac系統(tǒng)里自帶了這個(gè)expect命令。
使用
在編寫(xiě)腳本時(shí),我已經(jīng)考慮到,要盡量使這個(gè)腳本使用起來(lái)簡(jiǎn)單方便。如果只需要打包,那么只使用ipa-build腳本即可。如果需要用itms-services協(xié)議來(lái)發(fā)布,則再運(yùn)行ipa-publish腳本即可。在ipa-publish腳本中調(diào)用了upload腳本,所以u(píng)pload腳本不需要單獨(dú)使用。
ipa-build腳本使用方法:
ipa-build腳本絕對(duì)路徑 參數(shù)1 參數(shù)2其中,參數(shù)1是IOS工程的根路徑,是必輸項(xiàng)。參數(shù)2可以不輸入,是可選的,含義是編譯時(shí)的工程configuration類型,有4種類型可選:Debug, AdHoc,Release, Distribution。默認(rèn)是Release。
ipa-build腳本運(yùn)行后,會(huì)在IOS工程根路徑下生成名為“build”的文件夾,在這個(gè)文件夾中又有一個(gè)名為“ipa-build”的文件夾,打包所生成的最新ipa包就在其中。
ipa-publish腳本使用方法:
ipa-publish腳本絕對(duì)路徑 參數(shù)1 參數(shù)2參數(shù)1是IOS工程的根路徑,是必輸項(xiàng)。參數(shù)2是可選的,含義是當(dāng)上傳文件成功后是否發(fā)送email通知,y為發(fā)送,n為不發(fā)送,默認(rèn)的值是不發(fā)送。
ipa-publish腳本運(yùn)行后,會(huì)在“build”文件夾中生成一個(gè)以工程的targetname為名字的文件夾。其中,存放了itms-services協(xié)議所需的所有文件。腳本會(huì)將里面內(nèi)容全部上傳到服務(wù)器中。
注意事項(xiàng)
1、運(yùn)行腳本需要絕對(duì)路徑,不能使用相對(duì)路徑。
2、腳本下載后,若要使用,有些腳本需要一些改動(dòng)。
其中ipa-build腳本無(wú)須更改。可以直接使用。ipa-publish腳本需要配置一些信息后方能正常使用。
用文本打開(kāi)ipa-publish腳本后,在shell開(kāi)始的地方,有一段需要配置的地方,如下:
#須配置內(nèi)容 start#sftp參數(shù)設(shè)置 sftp_server=192.168.xx.xx sftp_username=xx sftp_password=xx sftp_workpath="/usr/share/xx/xx/xx"#發(fā)布應(yīng)用的url地址 pulish_url="http://xx.com/xx"#以下是郵箱的相關(guān)設(shè)置 #收件人 email_reciver=xx@xx.com #發(fā)送者郵箱 email_sender=xx@xx.com #郵箱用戶名 email_username=xx #郵箱密碼 email_password=xx #smtp服務(wù)器地址 email_smtphost=smtp.exmail.qq.com#可配置內(nèi)容 end根據(jù)實(shí)際情況配置即可。
webfrogs 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的IOS工程自动打包并发布脚本实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 万物随春醒!vivo S16全新配色“春
- 下一篇: 如何修改wifi为家庭网络