三位一体
Jan 2019 10
干货 | Python实现iOS自动化打包详解(含代码)
发表时间:
2019-01-10 11:37:52
分享至:

本文来自作者投稿,作者为筷云股份ios部门Qinz,筷云股份欢迎更多好作品投稿,以下欣赏正文▼


可能最简单的iOS自动化打包方式:无需手动配置证书,无需填写配置文件名称,更无需配置Bundle Identifer,总之无需很多繁琐配置,让打包流程一句命令完成!下面将会分享两种打包方式,一种是快速打包(打包时间就在一眨眼),一种是基于shenzhen(速度会比较慢)。两种方式都实现了一行命令完成打包并上传蒲公英!


 一: 基于编译的打包


目前所有打包方式中公认为最快的打包方式,应该就是编译工程--找到.app文件--新建Payload文件夹--拷贝.app到Payload文件夹--压缩成zip--更改后缀名为ipa--完成!


  1. 演示过程如下图:


手动打包


2. 上面的打包过程快的话2分钟左右可以完成,作为一个追求效率的攻城狮,怎么可能满足于此,而基于测试包的频繁性,我们肯定不想一直做这样重复性而没多少技术含量的工作,所以接下来,我们就把这个过程自动化!


640.gif

自动化打包1


在上图中,我们只需要执行python脚本,可以看到桌面很快生成了一个ProgramBag的文件夹,打开文件夹,彩蛋就在里面了!由于我写的脚本里包含了上传蒲公英的代码,这个包有28.3M,网络不太好会影响上传时间,真正的打包时间是可以忽略不记的,也就是执行脚本,敲击回车就好了的事!


自动化打包2


这里我们将打好的包自动上传到蒲公英网站,完成后自动打开下载地址,这个过程在网络好的条件下2分钟左右完成,99.9%的时间是发在上传包上!这里上传完成会自动打开到下载的网页。


3. 演示过程完毕,接下来我们就来看看原理是怎么实现的吧!下面开始讲解Python的具体代码~ 静心看完,相信你能看懂,说不定自己也可以很快写一个脚本,用来解决平常重复性的工作。下面是核心打包脚本: 


640.webp (17).jpg

                  

有没有似曾相识的感觉?看绿色文字的部分,其实就是liunx命令,通过脚本包装了一层,可以理解为我们以前在terminal手动输入的命令,现在是自动帮我们输入并执行了,大大解放了我们的双手!


640.webp (18).jpg


我们来分析上面这一句,我用OC的伪代码来实现的话对应下面这句:所以上面的%s相当于OC中的%@,是一种格式符,后面的appFileFullPath代表我们工程的.app存放的路径,PayLoadPath代表我们在桌面上新建的PayLoad文件路径。


640.webp (19).jpg


然后结合注释(自恋下:注释写的还算挺详细的)基本上代码的执行过程我们就一目了然了,至于前面的commands.getoutput是基于commands组件的命令,理解为可以在terminal执行命令即可,下面有一句代码需要说明:这是一句切换当前目录的命令。


640.webp (20).jpg


等价于


640.webp (21).jpg


不要问我为什么没有用下面的命令,那是因为这句命令我这边执行不成功,被坑了很久,至于原因,还不知道为什么(如果你解决了,欢迎骚扰我),所以用上面python提供的命令代替了。


4. 至此,我们将第一步的手动打包过程实现了自动话,如果不需要上传蒲公英,上面的9行命令就够用了!接下来我们实现上传蒲公英的脚本:


640.webp (22).jpg


requests是一个网络请求的组件,我们可以把它类比为AFNetWorking,data是要传递的参数,files是要传递的文件,至于上传的参数key都是根据蒲公英提供的API来写的。上面的password代表安装app时所需要的密码,同时还有两个参数,USER_KEY和API_KEY,在蒲公英应用的位置可以找到,如图:


640.webp (23).jpg


5. 后一步就是上传成功,帮我们自动打开下载页:


640.webp (24).jpg


webbrowser也是一个组件库,这些组件库在使用时,和OC一样,都要先import,里面的地址代表蒲公英上应用的地址,拷过来粘贴即可!


整体的脚本就完了,最后在使用时配置下面的几个参数即可,一次配置,永久使用!


640.webp (25).jpg


上图中appFileFullPath就是我们工程文件中.app的地址,至于PayLoadPath和packBagPath只需要你将"Qinz"用户名修改为你自己电脑的用户名即可!

下图演示快速设置appFileFullPath的过程:



到此,第一种自动化打包方式讲解完毕!


二:基于shenzhen打包


shenzhen是一个打包相关的库,使用也非常方便,比第一中打包方式还要少一个路径配置,当然打包的速度相对比较慢,要使用下面的脚本,首先得安装shenzhen,具体可参考https://github.com/nomad/shenzhen


640.webp (26).jpg


这里我主要是将shenzhen的打包命令"ipa build"封装在pythone脚本中,同时记录了打包的时间,经过测试打包的时间在4~7分钟左右,这个脚本中只需要配置蒲公英的USER_KEY和API_KEY,然后cd到当前工程目录,执行脚本即可!打包成功会在当前工程目录下生成ipa包和符号化文件!使用如下:



这里的描述日志是更新到蒲公英的填写的更新日志,最后打包完成记录如下,同时也是支持蒲公英上传的,最后完成如图:


640.webp (27).jpg

mage.png


640.webp (28).jpg


可以看到,打包时间耗时将近5分钟,在我看来时间还是有点长的,所以要想快速打包测试,使用第一种方式能提高不少工作效率!

踩坑之旅:完成这个脚本的过程中,可以说是一部心酸史,一把辛酸泪,踩了不少坑(主要是之前不懂脚本),网上很多关于自动化打包的文章,下载下来执行后就没成功过,有的是需要配置一些参数,繁琐的不像自动化,目前很流行的自动化打包库fastlane,在我使用时,按照官方的教程打包就没有一次成功过,还有就是报错后都不知道怎么解决,打包就像碰运气,心里完全没底,可以说被折磨的体无完肤,经过多次失败的经历后,我决定要自己撸一个脚本,于是学习下Python脚本的语法,也就有了现在的这个版本!关于AppStore的包,还是建议使用Xcode打包!


最后,附上这两个脚本的下载地址:

iOS自动化打包脚本:https://github.com/ys323945/iOSAutoPage/tree/master


我是筷云股份Qinz,希望我的文章对你有帮助。筷云股份著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。


关于FEC筷云股份
作为专业互联网+云平台技术与服务供应商 ,FEC筷云股份可帮助各种规模以及各行业领域的公司企业实现更加卓越的互联网+体验。从电子商务前端网站系统,到电子商务运营系统,从移动APP应用开发,到微信应用,从行业解决方案到O2O应用,FEC筷云股份重塑企业边界,助力成长,生态聚合,颠覆重构,励志为全球客户提供世界级互联网+解决方案。FEC互联网+整体技术解决方案服务100多家上市公司,帮助50000多家企业互联网转型。如欲了解更多信息,请访问 www.fecsoft.cn ,想了解FEC电子商务云平台,请访问 www.feccloud.com
独家专访
筷云电商云平台助力传统企业转型互联网
FEC筷云股份助力成长
售前咨询电话
400-8015-205
在线客服
在线客服,立即响应
在线客服
建议反馈
筷云股份渴望您的建议
立即反馈
在一切结束之前,先说说您的想法吧!
  • 在线咨询
  • 售前咨询热线
    400-8015-205
  • 售后咨询热线
    0755-82127232
  • 产品顾问
    0775-83722997
  • 我要留言