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

然后心里一直觉得这么高大上的东西应该有点难度吧,在网上搜索了一下,大概扫了几篇文章,发现大片大片的文字,脑袋一下就懵逼了,很不情愿去阅读大量的废话,但是又没有找到一篇简洁易懂,直入正题的文章,后来想想,这东西还是必须要学一学,听着就这么高大上,装逼效果杠杠的,然后耐心去查找资料,原本我是一个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. Python基础教程:内置类型之生成器
  2. HTML中文网页乱码问题
  3. 递归算法造成的问题分析与解决
  4. 创建ipadWEB应用程序到主屏幕
  5. java 809 128 题_java编程题809*??=800*??+9*??+1
  6. sql日期和时间函数
  7. 机械工程专业英语词汇
  8. 颜色表大全 颜色中英文对照表
  9. BusHound详解
  10. 数学实验4:Matlab作图实验
  11. 实现微信公众号跳转登录外部链接
  12. DID 去中心化数字身份
  13. python接入excel_Excel 借助 Python 连接 WorkBench,实现 Excel 输入参数返回结果
  14. 电脑手机二合一 华为云电脑你办公的好助手 最适合上班族
  15. android+动态光圈效果,OpenGL Shader实例分析(8)彩色光圈效果
  16. 计算机c盘空间满了应该怎么办,电脑c盘空间满了怎么办?教你12个方法解决电脑c盘空间不足的问题...
  17. 834. 树中距离之和
  18. python字典的遍历方法_python字典遍历的方法有哪些?
  19. 智能车竞赛逆透视变换(含编程实现)
  20. Flash Builder 4beta2 版中的新特性

热门文章

  1. 二手苹果8多少钱_苹果8p电池容量多少,苹果8p换电池多少钱
  2. PHP华为机试在线训练解题思路
  3. Elsevier论文草稿在排版时如何添加行号?(单栏排版,双栏排版)
  4. 【Kilav】 数据库复习资料 其一
  5. java版本+企业电子招标采购系统源码+项目模块功能清单+spring cloud +spring boot
  6. 在cmd中安装MySQL,MySQL(桌面图标版)
  7. 我们开源了一个轻量的 Web IDE UI 框架 - Molecule
  8. matlab在三维图侧面添加二维图
  9. 永星电子 HDMI LVDS VGA USB 转 to MIPI DSI 驱动DOME支持1080P旋转横屏安卓RK3288音频缩放自适应机顶盒子投影仪相机PS4 T13530080630
  10. python熊猫小课成果_python实战之原生爬虫(爬取熊猫主播排行榜)