美文网首页iOS DeveloperPython之路Python
手把手教你使用python自动打包 上传应用分发

手把手教你使用python自动打包 上传应用分发

作者: wg689 | 来源:发表于2018-07-13 21:46 被阅读384次

    1)先上脚本 步骤很简单 ,如下文所示

    本脚本是基于python3,如何在mac 电脑升级python3
    参考我2天前写的文章 Mac 系统同时安装python2 和python3

    #!/usr/bin/env python
    #coding=utf-8 
    import os
    import requests
    import webbrowser
    import subprocess
    import shutil
    
    import smtplib
    from email.mime.text import MIMEText
    '''
    使用注意事项:该脚本基于python3.6
    1、将工程的编译设备选成 Gemeric iOS Device
    2、command + B编译
    3、执行脚本文件
    
    '''
    # 此处如何获得参见后文:如何获得appFileFullPath
    appFileFullPath = '/Users/wanggang/Library/Developer/Xcode/DerivedData/test-adibxqnypizygeczgsvpokgqchxy/Build/Products/Debug-iphoneos/test.app'
    
    # 就是普通文件夹
    PayLoadPath = '/Users/wanggang/Desktop/Payload'
    packBagPath = '/Users/wanggang/Desktop/ProgramBag'
    
    # 此处如何获得参见本文:如何获得openUrlPath
    openUrlPath = 'https://www.pgyer.com/manager/dashboard/app/834eae1bcc75c193b4cb96ce0b4daf70'
    downloadUrlPath = 'https://www.pgyer.com/w3s1'
    
    mail_user = '596201463@qq.com'                                 #发送方邮箱
    # 此处如何获得 
    mail_pass = 'f'                                   #填入发送方邮箱的授权码  百度:QQ邮箱授权码如何获取 查看教程
    msg_to = '596201463@qq.com'                                  #收件人邮箱
    mail_namelist = ["596201463@qq.com","111@qq.com"]
    #上传蒲公英  
    USER_KEY = ""
    API_KEY = ""
    
    #上传蒲公英
    def uploadIPA(IPAPath):
        if(IPAPath==''):
            print ("\n*************** 没有找到对应上传的IPA包 *********************\n")
            return
        else:
            print ("\n***************开始上传到蒲公英*********************\n")
            url='http://www.pgyer.com/apiv1/app/upload'
            data={
                'uKey':USER_KEY,
                '_api_key':API_KEY,
                'installType':'2',
                'password':'',
                'updateDescription':des
            }
            files={'file':open(IPAPath,'rb')}
            r=requests.post(url,data=data,files=files)
    
    def openDownloadUrl():
        webbrowser.open(openUrlPath)
        print ("\n*************** 更新成功 *********************\n")
    
    
    
    #编译打包流程
    def bulidIPA():
        #删除之前打包的ProgramBag文件夹
        subprocess.call(["rm","-rf",packBagPath])
        #创建PayLoad文件夹
        mkdir(PayLoadPath)
        #将app拷贝到PayLoadPath路径下
        subprocess.call(["cp","-r",appFileFullPath,PayLoadPath])
        #在桌面上创建packBagPath的文件夹
        subprocess.call(["mkdir","-p",packBagPath])
        #将PayLoadPath文件夹拷贝到packBagPath文件夹下
        subprocess.call(["cp","-r",PayLoadPath,packBagPath])
        #删除桌面的PayLoadPath文件夹
        subprocess.call(["rm","-rf",PayLoadPath])
        #切换到当前目录
        os.chdir(packBagPath)
        #压缩packBagPath文件夹下的PayLoadPath文件夹夹
        subprocess.call(["zip","-r","./Payload.zip","."])
        print ("\n*************** 打包成功 *********************\n")
        #将zip文件改名为ipa
        subprocess.call(["mv","payload.zip","Payload.ipa"])
        #删除payLoad文件夹
        subprocess.call(["rm","-rf","./Payload"])
    
    
    #创建PayLoad文件夹
    def mkdir(PayLoadPath):
        isExists = os.path.exists(PayLoadPath)
        if not isExists:
            os.makedirs(PayLoadPath)
            print (PayLoadPath + '创建成功')
            return True
        else:
            print (PayLoadPath + '目录已经存在')
            return False
    
    #发送邮件
    def send_qq_email(title,conen):
        try:
            
            content = "新版本已发布请前往:\n" + downloadUrlPath + " 下载测试" + "\n更新内容:" + conen
            
            msg = MIMEText(str(content))
            #设置标题
            msg["Subject"] = title
            # 发件邮箱
            msg["From"] = mail_user
            #收件邮箱
            msg["To"] = ";".join(mail_namelist)
            # 设置服务器、端口
            s = smtplib.SMTP_SSL("smtp.qq.com", 465)
            #登录邮箱
            s.login(mail_user, mail_pass)
            # 发送邮件
            s.sendmail(mail_user, mail_namelist, msg.as_string())
            s.quit()
            print ("\n*************** 邮件发送成功! *********************\n")
            return True
        except smtplib.SMTPException:
            print ("\n*************** 邮件发送失败! *********************\n")
            return False
    
    if __name__ == '__main__':
        des = input("请输入更新的日志描述:")
        bulidIPA()
        uploadIPA('%s/Payload.ipa'%packBagPath)
        openDownloadUrl()
        send_qq_email("App 测试版本更新",des)
    

    1.1)如何获得appFileFullPath

    QQ20180713-1.png

    1.2)如何获得openUrlPath

    QQ20180713-2.png

    1.3)如何获得USER_KEY,api_key

    QQ20180713-3.png

    1.4)如何获得downloadUrlPath

    扫码下载的时候,在safari的页面顶端的地址


    QQ20180713-4.png

    1.5) 如何获得发送邮件的授权码

    参考如何获得发送邮件的授权码

    2) 配置完毕,运行脚本

    python /Users/wanggang/Downloads/uploadPGYER-wg/DB3.0.py
    就可以实现自动打包,上传蒲公英,并且发送邮件

    QQ20180713-5.png

    2.1) 脚本下载地址

    [脚本下载地址](https://github.com/wg689/dabao

    2.2)自动发送的邮件

    QQ20180713-6.png

    3) 后记

    将上述脚本的配置修改下,按照本文的配置成自己的 ,大约1个小时就可以实现干活,当然前提是你

    • 需要会一点python,并且安装了python3(需要花1到3个小时),
    • 需要有一个蒲公英账号并且认证下大约一个小时,
    • 当然还需要真机调试的证书,测试的手机的uuid 添加到了developer 后台

    4) 本脚本的使用价值

    一般是jenkens 打包,打包一次可能需要排队,打包一个app需要20分钟到1个小时不等,开发修改一个bug,提交代码,打包测试 ,到下载安装需要20分钟到1个小时,使用本脚本是将本地编译好的app进行导出为ipa 上传到蒲公英,这个时间可能节约到了2到5分钟,就是一个上传的时间了,app编译是每个开发需要做的,因为要自测

    参考文献

    Python实现iOS自动化打包发送邮件至测试人员邮箱详解

    相关文章

      网友评论

      • 翻滚的炒勺2013:你好 我用的是3.7 报错找不到 ModuleNotFoundError: No module named 'requests'
        找不到requests 有解决方案吗
        wg689:@翻滚的炒勺2013 换个python 版本

      本文标题:手把手教你使用python自动打包 上传应用分发

      本文链接:https://www.haomeiwen.com/subject/piwspftx.html