iOS使用python编写脚本自动化打包

刚开始听到自动化打包这个词的时候,我表示很惊讶,还可以这样玩儿?

然后心里一直觉得这么高大上的东西应该有点难度吧,在网上搜索了一下,大概扫了几篇文章,发现大片大片的文字,脑袋一下就懵逼了,很不情愿去阅读大量的废话,但是又没有找到一篇简洁易懂,直入正题的文章,后来想想,这东西还是必须要学一学,听着就这么高大上,装逼效果杠杠的,然后耐心去查找资料,原本我是一个iOS程序猿,对于一个刚开始接触python的新手来说,写一个python程序去做iOS的自动打包是有那么一点懵逼,不过还好,有时候真的深有体会,好记性不如烂笔头,但是对于我来说,不光是记性,在网上找了一个python程序自己跟着敲了一遍,然后再回过头去一段一段理解过来,就大概明白是什么意思了,如果光靠眼睛去看,我表示真的很难懂,所以,任何事情还是都需要亲自做过了才更容易明白是怎么回事。

同样废话了一大堆,就当是和大家交流一下学习心得吧,下面进入正题:

我们要明确我们的目的,是做iOS自动打包,所以,我们先要知道,我们是怎样一步一步的去打包iOS项目的,然后再通过python程序,将整个流程串联起来,实现自动进行打包的这么一个功能。(因为现在进行iOS开发,我们都会用到pods这个工具来管理一些三方库,所以这里我就只介绍对于使用pods的工程打包的命令,对于没有使用pods管理工具的项目打包的命令会不一样,有需要的同学可以自己去查一下资料)

我们知道iOS打包时一般有两个步骤:

1.archive

2.导出ipa包

我们就可以根据这两个步骤来进行,既然是自动化,肯定就不能和手动的那样一样的方式,当然是使用终端命令的方式来进行打包,下面直接上命令:

第一步:生成archive命令

xcodebuild -workspace ProjectName.xcworkspace -scheme scheme -archivePath ./build/ProjectName.xcarchive archive

上面这条命令就是archive的命令,我们重点关注里面加粗显示的三个地方,ProjectName是你的工程名字ProjectName.xcworkspace就代表你使用pods时生成的工作区,后面的scheme代表你项目中设置的scheme名,后面的./build/ProjectName.xcarchive这部分是archive后生成的文件的路径,这里我是在我的工程的根目录下面进行的,所以直接在根目录生成一个build文件夹放archive生成的文件。(不用担心会产生垃圾文件,一会我们在写python程序的时候会在导出ipa后将这个文件夹里面的垃圾文件进行删除的,后面如果有需要想看看这个文件是什么的同学可以把python代码里面的清除方法注释一下,到build这个文件夹下查看,build文件夹在工程的根目录中)

第二步:导出ipa命令

xcodebuild -exportArchive -exportOptionsPlist ./ProjectName/info.plist -archivePath ./build/ProjectName.xcarchive -exportPath ~/Desktop/

我们同样只需要关注三个地方的参数就可以了,ProjectName就是我们的项目名字,同样./build/ProjectName.xcarchive就是我们放archive产生的文件的路径,然后~/Desktop/就是我们导出ipa包时存放的位置了,这里我是将导出的ipa包放在了桌面,因为打完包以后可以方便我使用。

了解了我们命令打包iOS项目需要用到的两条主要命令以后,我们接下来就可以编写python程序了,这里我用到的是pyCharm CE这个工具编写python程序,看了网上有一些用python写了自动打包程序的,内容太杂,看起来很费劲,里面还有自动将ipa包上传到第三方托管平台等的代码,这里方便大家学习,我就只说怎么将ipa包自动化打包然后导出来,如果有需要上传第三方平台的同学的可以去看看其他文章,因为我们现在暂时没有用到第三方平台,我们用的自己的服务器,对大家可能不适用,所以就不介绍了,然后后面如果我要用到,会再写一篇文章的。

我们在编写python程序的时候会用到subprocess这个第三方库,直接新建一个python程序,然后import subprocess这个库,如果已经有这个库就可以直接使用了,如果没有这个库,就需要使用python的第三方库管理工具pip进行安装了,这里使用pip安装python的第三方库的时候有可能会有一些小伙伴会遇到报错的情况,我在另外一篇文章《使用python第三方管理工具pip安装三方库时报错解决办法》里面有讲到,遇到这个问题的小伙伴可以去看一下。

准备好这个库以后,我们就来直接开始编写python程序了。

第一步:

import subprocess

引入这个库,然后定义一个全局的属性,用于表示导出ipa包需要存放的位置路径,方便后面根据自己的需要修改

EXPORT_MAIN_DIRECTORY ="~/Desktop/"

然后我们进行第一个步骤:archive

python进行archive的方法

代码里面注释已经写得很清楚了,简单易懂,这里就不和大家废话了,下一个步骤:

将archive的文件导出成ipa包,在上面的代码里面可以看到打包成功后是调用的exportIpa()这个方法进行导出的:

python导出ipa包的方法

在导出ipa包之后我们会调用cleanArchiveFile()这个方法对之前产生的垃圾文件进行清除,以免多次打包以后占用我们的工程目录下的空间,下面是清除这些文件的方法:

python清除文件的方法

请大家忽略我的工程名字,测试使用。

到这里我们的python自动化打包小程序就写完了,等你也写完 的时候就会感觉,其实还是挺简单的嘛。

不要着急,最后一步,没有这一步,这个python程序也运行不起来啊

在主函数中调用我们编写的方法:

然后保存,收工,如果不出意外的话,前提是你得写对,这个小程序就完成了,然后就可以打开终进行测试了,在终端里进入你放这个python程序的目录下,(这里申明一下,我写的这个python程序的名字叫做autobuild.py)直接输入命令:

python autobuild.py

然后回车,如果你看到终端不断的打印出build的信息,那么恭喜你,你成功了,接下了就是等待,等待build完成,主要就是build的时间久一点,build完以后导出ipa包其实不到10秒钟就好了,等到你的桌面出现了一个新的ipa包,你的自动打包功能就完成了,然后我们进入到build这个文件夹下面去查看,build生成的xcarchive文件也被删除了,这个小程序就算是成功完成了,以后我们只要想对工程进行打包测试的时候只需要在终端输入python autobuild.py这个命令就可以先忙着其他的事情等到ipa包自动出现了,再也不用手动去一步一步的点击下一步,随时盯着进度等着点下一步了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容