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

然后心里一直觉得这么高大上的东西应该有点难度吧,在网上搜索了一下,大概扫了几篇文章,发现大片大片的文字,脑袋一下就懵逼了,很不情愿去阅读大量的废话,但是又没有找到一篇简洁易懂,直入正题的文章,后来想想,这东西还是必须要学一学,听着就这么高大上,装逼效果杠杠的,然后耐心去查找资料,原本我是一个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包自动出现了,再也不用手动去一步一步的点击下一步,随时盯着进度等着点下一步了

ios执行python脚本_iOS使用python编写脚本自动化打包相关推荐

  1. php网页脚本代码大全,PHP编写脚本代码的详细教程

    下面是小编给大家分享的一篇PHP编写脚本代码的详细教程,感兴趣的朋友跟小编一起来了解一下吧! 看看下面的这段PHP脚本,它用来在输入的用户名及口令正确时授权访问一个Web页面: 复制代码 代码如下: ...

  2. java ui自动化测试脚本,如何用Airtest编写UI自动化脚本(示例代码)

    前言 游戏并不像app一样直接把渲染树节点暴露出来,这就造成游戏UI自动化在元素定位上的不方便性,不过依赖airtest的图片识别,我们可以直接跳过元素检查,以图片对比的形式进行自动化,虽然效率可能会 ...

  3. python语言+selenium自动化,编写脚本调用Chrome、Firefox浏览器打开百度网站

    python语言+selenium自动化,编写脚本调用Chrome.Firefox浏览器打开百度网站 目标:初始化一个webdriver实例对象driver,通过webdriver.Chrome()和 ...

  4. 一次使用 Go 语言编写脚本的经历

    本文介绍了我如何尝试使用 Go 语言进行脚本编程的经历.文中我将讨论 Go 脚本的必要性,我们预期的表现以及可能的实现方式.在讨论过程中,我讲深入探讨脚本.Shell 和 Shebang.最终,我们将 ...

  5. 送书 | Python 之父揭密Python受欢迎的本质真相!

    2021年初编程语言社区 TIOBE 最新发布了 1 月编程语言排行榜,揭晓了 2020 年度最受欢迎的编程语言--Python 以 2.01% 的正增长荣获 2020 年度 TIOBE 编程语言奖. ...

  6. python selenium下载图片_Python Selenium Web自动化上传/下载文件图文详解

    情景: 在用selenium进行web页面自动化时,时不时会遇到上传附件的情况,常见的情况就是一个上传按钮,点击后弹出windows窗口,选择文件后上传,如下图1所示 图1 这种情况超出了seleni ...

  7. 使用Swift编写脚本

    使用Swift编写脚本 通常我们在编写脚本处理自动化或者通用处理的时候,使用的是 Shell 语言,但是作为有一个 Swift 语言使用者,你应该知道,Swift 也可以作为脚本语言来编写脚本. Wh ...

  8. linux获取随机数脚本,Linux下对拍脚本与随机数生成器

    对拍脚本 新建一个文档 check.sh 作为对拍脚本. #!/bin/bash while(true)do #死循环 ./data > .in #运行数据生成器,将数据输出到1.in ./st ...

  9. 编写一个完整的python脚本(新建脚本--编写脚本--执行脚本)

    1.python脚本的格式是什么 举个例子来说明:hello.py中hello是脚本名,py脚本格式 2.脚本的结构 #coding:utf-8 //脚本头 一个空行分割 import os //引用 ...

最新文章

  1. Flex学习的利器《Hello Flex4》
  2. 线性代数可以速成吗_英语真的可以速成吗?
  3. C#操作xml之xpath语法
  4. 新装的linux系统,用SSH连接出现乱码怎么办?附改名虚拟机文件方法
  5. Java笔记-spring-rabbitmq中使用@RabbitListener消费(手动确认,获header数据)
  6. C#基础知识1-深入理解值类型和引用类型
  7. phpStorm提示Cannot save files解决 js___jb_tmp___
  8. 初学oracle遇到些小麻烦
  9. 计算机逻辑学包含分析,逻辑学在职研究生教育的基本内容分析
  10. android之NDK version was not found
  11. webstorm注释写出的提示
  12. wireshark抓包方法及数据分析
  13. c语言定义星期一到日,C语言万年历程序设计
  14. 综治应急指挥中心建设方案
  15. linux删除文件历史如何查看,如何恢复误删除的Linux文件
  16. 【示波器专题】示波器带宽对测量的影响
  17. linux服务器杀毒软件命令,悬镜Linux服务器卫士-木马查杀详解
  18. pip install xxx模块如何自动桥接国内镜像源
  19. 1367: [蓝桥杯2018初赛]付账问题
  20. UE4最简单的方法实现视频抠像

热门文章

  1. 水面反光如何拍摄_如何拍摄水面倒影,4招教你拍出好看的照片
  2. jinja2 使用教程
  3. python+opencv虚化边缘
  4. Matlab中的彩色图及colormap
  5. 计算机考试中英文打字题,五笔及中英文打字试题()含答案.doc
  6. 安卓 虚拟按键显示与隐藏适配
  7. ORA-12170:TNS:Connect timeout occurred
  8. 十大常用前端UI组件库
  9. C语言 条件判断语句、while循环、switch语句
  10. Linux的安装及使用