剛開(kāi)始聽(tīng)到自動(dòng)化打包這個(gè)詞的時(shí)候,我表示很驚訝纬乍,還可以這樣玩兒碱茁?
然后心里一直覺(jué)得這么高大上的東西應(yīng)該有點(diǎn)難度吧,在網(wǎng)上搜索了一下仿贬,大概掃了幾篇文章纽竣,發(fā)現(xiàn)大片大片的文字,腦袋一下就懵逼了茧泪,很不情愿去閱讀大量的廢話蜓氨,但是又沒(méi)有找到一篇簡(jiǎn)潔易懂,直入正題的文章队伟,后來(lái)想想穴吹,這東西還是必須要學(xué)一學(xué),聽(tīng)著就這么高大上嗜侮,裝逼效果杠杠的港令,然后耐心去查找資料代嗤,原本我是一個(gè)iOS程序猿,對(duì)于一個(gè)剛開(kāi)始接觸python的新手來(lái)說(shuō)缠借,寫(xiě)一個(gè)python程序去做iOS的自動(dòng)打包是有那么一點(diǎn)懵逼干毅,不過(guò)還好,有時(shí)候真的深有體會(huì)泼返,好記性不如爛筆頭硝逢,但是對(duì)于我來(lái)說(shuō),不光是記性绅喉,在網(wǎng)上找了一個(gè)python程序自己跟著敲了一遍渠鸽,然后再回過(guò)頭去一段一段理解過(guò)來(lái),就大概明白是什么意思了柴罐,如果光靠眼睛去看徽缚,我表示真的很難懂,所以革屠,任何事情還是都需要親自做過(guò)了才更容易明白是怎么回事凿试。
同樣廢話了一大堆,就當(dāng)是和大家交流一下學(xué)習(xí)心得吧似芝,下面進(jìn)入正題:
我們要明確我們的目的那婉,是做iOS自動(dòng)打包,所以党瓮,我們先要知道详炬,我們是怎樣一步一步的去打包iOS項(xiàng)目的,然后再通過(guò)python程序寞奸,將整個(gè)流程串聯(lián)起來(lái)呛谜,實(shí)現(xiàn)自動(dòng)進(jìn)行打包的這么一個(gè)功能。(因?yàn)楝F(xiàn)在進(jìn)行iOS開(kāi)發(fā)枪萄,我們都會(huì)用到pods這個(gè)工具來(lái)管理一些三方庫(kù)隐岛,所以這里我就只介紹對(duì)于使用pods的工程打包的命令,對(duì)于沒(méi)有使用pods管理工具的項(xiàng)目打包的命令會(huì)不一樣呻引,有需要的同學(xué)可以自己去查一下資料)
我們知道iOS打包時(shí)一般有兩個(gè)步驟:
1.archive
2.導(dǎo)出ipa包
我們就可以根據(jù)這兩個(gè)步驟來(lái)進(jìn)行礼仗,既然是自動(dòng)化,肯定就不能和手動(dòng)的那樣一樣的方式逻悠,當(dāng)然是使用終端命令的方式來(lái)進(jìn)行打包元践,下面直接上命令:
第一步:生成archive命令
xcodebuild -workspace ProjectName.xcworkspace -scheme scheme -archivePath ./build/ProjectName.xcarchive archive
上面這條命令就是archive的命令,我們重點(diǎn)關(guān)注里面加粗顯示的三個(gè)地方童谒,ProjectName是你的工程名字ProjectName.xcworkspace就代表你使用pods時(shí)生成的工作區(qū)单旁,后面的scheme代表你項(xiàng)目中設(shè)置的scheme名,后面的./build/ProjectName.xcarchive這部分是archive后生成的文件的路徑饥伊,這里我是在我的工程的根目錄下面進(jìn)行的象浑,所以直接在根目錄生成一個(gè)build文件夾放archive生成的文件蔫饰。(不用擔(dān)心會(huì)產(chǎn)生垃圾文件,一會(huì)我們?cè)趯?xiě)python程序的時(shí)候會(huì)在導(dǎo)出ipa后將這個(gè)文件夾里面的垃圾文件進(jìn)行刪除的愉豺,后面如果有需要想看看這個(gè)文件是什么的同學(xué)可以把python代碼里面的清除方法注釋一下篓吁,到build這個(gè)文件夾下查看,build文件夾在工程的根目錄中)
第二步:導(dǎo)出ipa命令
xcodebuild -exportArchive -exportOptionsPlist ./ProjectName/info.plist -archivePath ./build/ProjectName.xcarchive -exportPath ~/Desktop/
我們同樣只需要關(guān)注三個(gè)地方的參數(shù)就可以了蚪拦,ProjectName就是我們的項(xiàng)目名字杖剪,同樣./build/ProjectName.xcarchive就是我們放archive產(chǎn)生的文件的路徑,然后~/Desktop/就是我們導(dǎo)出ipa包時(shí)存放的位置了驰贷,這里我是將導(dǎo)出的ipa包放在了桌面盛嘿,因?yàn)榇蛲臧院罂梢苑奖阄沂褂谩?/p>
了解了我們命令打包iOS項(xiàng)目需要用到的兩條主要命令以后,我們接下來(lái)就可以編寫(xiě)python程序了括袒,這里我用到的是pyCharm CE這個(gè)工具編寫(xiě)python程序次兆,看了網(wǎng)上有一些用python寫(xiě)了自動(dòng)打包程序的,內(nèi)容太雜锹锰,看起來(lái)很費(fèi)勁芥炭,里面還有自動(dòng)將ipa包上傳到第三方托管平臺(tái)等的代碼,這里方便大家學(xué)習(xí)城须,我就只說(shuō)怎么將ipa包自動(dòng)化打包然后導(dǎo)出來(lái)蚤认,如果有需要上傳第三方平臺(tái)的同學(xué)的可以去看看其他文章米苹,因?yàn)槲覀儸F(xiàn)在暫時(shí)沒(méi)有用到第三方平臺(tái)糕伐,我們用的自己的服務(wù)器,對(duì)大家可能不適用蘸嘶,所以就不介紹了良瞧,然后后面如果我要用到,會(huì)再寫(xiě)一篇文章的训唱。
我們?cè)诰帉?xiě)python程序的時(shí)候會(huì)用到subprocess這個(gè)第三方庫(kù)褥蚯,直接新建一個(gè)python程序,然后import subprocess這個(gè)庫(kù)况增,如果已經(jīng)有這個(gè)庫(kù)就可以直接使用了赞庶,如果沒(méi)有這個(gè)庫(kù),就需要使用python的第三方庫(kù)管理工具pip進(jìn)行安裝了澳骤,這里使用pip安裝python的第三方庫(kù)的時(shí)候有可能會(huì)有一些小伙伴會(huì)遇到報(bào)錯(cuò)的情況歧强,我在另外一篇文章《使用python第三方管理工具pip安裝三方庫(kù)時(shí)報(bào)錯(cuò)解決辦法》里面有講到,遇到這個(gè)問(wèn)題的小伙伴可以去看一下为肮。
準(zhǔn)備好這個(gè)庫(kù)以后摊册,我們就來(lái)直接開(kāi)始編寫(xiě)python程序了。
第一步:
import subprocess
引入這個(gè)庫(kù)颊艳,然后定義一個(gè)全局的屬性茅特,用于表示導(dǎo)出ipa包需要存放的位置路徑忘分,方便后面根據(jù)自己的需要修改
EXPORT_MAIN_DIRECTORY ="~/Desktop/"
然后我們進(jìn)行第一個(gè)步驟:archive
代碼里面注釋已經(jīng)寫(xiě)得很清楚了,簡(jiǎn)單易懂白修,這里就不和大家廢話了妒峦,下一個(gè)步驟:
將archive的文件導(dǎo)出成ipa包,在上面的代碼里面可以看到打包成功后是調(diào)用的exportIpa()這個(gè)方法進(jìn)行導(dǎo)出的:
在導(dǎo)出ipa包之后我們會(huì)調(diào)用cleanArchiveFile()這個(gè)方法對(duì)之前產(chǎn)生的垃圾文件進(jìn)行清除兵睛,以免多次打包以后占用我們的工程目錄下的空間舟山,下面是清除這些文件的方法:
請(qǐng)大家忽略我的工程名字,測(cè)試使用卤恳。
到這里我們的python自動(dòng)化打包小程序就寫(xiě)完了累盗,等你也寫(xiě)完 的時(shí)候就會(huì)感覺(jué),其實(shí)還是挺簡(jiǎn)單的嘛突琳。
不要著急若债,最后一步,沒(méi)有這一步拆融,這個(gè)python程序也運(yùn)行不起來(lái)啊
在主函數(shù)中調(diào)用我們編寫(xiě)的方法:
然后保存蠢琳,收工,如果不出意外的話镜豹,前提是你得寫(xiě)對(duì)傲须,這個(gè)小程序就完成了,然后就可以打開(kāi)終進(jìn)行測(cè)試了趟脂,在終端里進(jìn)入你放這個(gè)python程序的目錄下泰讽,(這里申明一下,我寫(xiě)的這個(gè)python程序的名字叫做autobuild.py)直接輸入命令:
python autobuild.py
然后回車昔期,如果你看到終端不斷的打印出build的信息已卸,那么恭喜你,你成功了硼一,接下了就是等待累澡,等待build完成,主要就是build的時(shí)間久一點(diǎn)般贼,build完以后導(dǎo)出ipa包其實(shí)不到10秒鐘就好了愧哟,等到你的桌面出現(xiàn)了一個(gè)新的ipa包,你的自動(dòng)打包功能就完成了哼蛆,然后我們進(jìn)入到build這個(gè)文件夾下面去查看蕊梧,build生成的xcarchive文件也被刪除了,這個(gè)小程序就算是成功完成了人芽,以后我們只要想對(duì)工程進(jìn)行打包測(cè)試的時(shí)候只需要在終端輸入python autobuild.py這個(gè)命令就可以先忙著其他的事情等到ipa包自動(dòng)出現(xiàn)了望几,再也不用手動(dòng)去一步一步的點(diǎn)擊下一步,隨時(shí)盯著進(jìn)度等著點(diǎn)下一步了