python 手机自动化脚本_iOS python自动化出包脚本
脚本代码如下:
#!/usr/bin/python
# -*- coding:UTF-8 -*-
import os
import sys
import time
# 发邮件所用
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
# 需要配置分割线 ===================================================================
# fir token
fir_api_token = '34d6f526c9fdcf9afe90753cdb9bb837' #firm的api token
download_address = "https://fir.im/xxxxxxxxx" #firm 下载地址
# pgyer
pgyer_uKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
pgyer_apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
pgyer_appQRCodeURL = "http://www.pgyer.com/xxxxxxxxx" # 下载地址
pgyer_password = "12345"
pgyer_updateDescription = "test版本" # 更新描述
# 项目配置
project_Name = 'Unity-iPhone' #工程名
scheme = 'Unity-iPhone' #scheme
isDistribution = False #生成dev包或者dis包类型
isWorkspace = False #工程类型 pod工程 -workspace 普通工程 -project
# 项目根目录
project_path = '/Users/yostar/Desktop/ProjectiOSTest'
#当前autoIpa.py 以及 plist 所在文件夹位置
#主执行文件的父级目录
autoPythonRoot = sys.path[0]
# 发邮件相关信息
from_addr = '250***2914@qq.com'
password = 'plgke***pzbjdice'
smtp_host = 'smtp.qq.com'
to_addr = ['250***2914@qq.com', '1728***24@qq.com']
# 需要配置分割线 ===================================================================
# 编译模式 Debug,Release
def configuration():
if isDistribution:
return 'Release'
else:
return 'Debug'
# 编译成功后.xcarchive所在目录
archive_dir = project_path + '/archive'
# 打包后ipa存储目录
targerIPA_dir = project_path + '/ipaDir'
#CA certificate
#发布包相关的plist
DistributionExportFileName = "Distribution_ExportOptions.plist"
#测试包相关的plist
DeveloperExportFileName = "Develop_ExportOptions.plist"
#时间字符串
time_Tag = '%s'%(time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time())))
#xcodebuild export ipa包命令时需要用到
def export_OptionsPlist():
if isDistribution:
return autoPythonRoot + '/' + DistributionExportFileName
else:
return autoPythonRoot + '/' + DeveloperExportFileName
#打包名字
def archiveName():
return project_Name + '_' + time_Tag + '.xcarchive'
#archive地址
def archivePath():
return '%s/%s'%(archive_dir, archiveName())
#ipa包名
def ipaFileName():
return '%s_%s'%(project_Name, time_Tag)
#ipa导出地址
def exportPath():
if isDistribution:
return '%s/%s/%s'%(targerIPA_dir, 'Distribution', ipaFileName())
else:
return '%s/%s/%s'%(targerIPA_dir, 'development', ipaFileName())
# 清理项目
def clean_project():
os.system('rm -rf %s'%(archive_dir))
print(project_path + '******' + project_Name + '******' + '******' + scheme + '******' + configuration())
if isWorkspace:
os.system('cd %s; xcodebuild clean -workspace %s.xcworkspace -scheme %s -configuration %s'%(project_path, project_Name, scheme, configuration()))
else:
os.system('cd %s; xcodebuild clean -project %s.xcodeproj -scheme %s -configuration %s'%(project_path, project_Name, scheme, configuration()))
#archive 打包
def archive_project():
print('======archive_project start')
print(archiveName())
if isWorkspace:
os.system('cd %s; xcodebuild archive -workspace %s.xcworkspace -scheme %s -archivePath %s'%(project_path, project_Name, scheme, archivePath()))
else:
os.system('cd %s; xcodebuild archive -project %s.xcodeproj -scheme %s -archivePath %s'%(project_path, project_Name, scheme, archivePath()))
# 打包ipa 并且保存在桌面
def export_ipa():
print('export_ipa start')
print(ipaFileName())
print(export_OptionsPlist())
os.system('cd %s; xcodebuild -exportArchive -archivePath %s/ -exportOptionsPlist %s -exportPath %s'%(project_path, archivePath(), export_OptionsPlist(), exportPath()))
##上传到fir
def upload_fir():
p = exportPath() + '/' + scheme + '.ipa'
if os.path.exists(p):
print('watting===%s...上传到fir'%p)
# 直接使用fir 有问题 这里使用了绝对地址 在终端通过 which fir 获得
ret = os.system('fir publish %s -T %s'%(p, fir_api_token))
print('watting...上传结束')
return True
else:
print('没有找到IPA文件')
return False
# 发邮件
def send_mail():
msg = MIMEText('【%s】'%scheme + 'iOS 测试项目完成,请下载测试!如有问题,请联系iOS相关人员,我们会及时解决,谢谢!', 'plain', 'utf-8') #发邮件内容
msg['From'] = Header('自动打包系统' % from_addr, 'utf-8') #发件人
msg['To'] = Header('测试人员', 'utf-8') #收件人
msg['Subject'] = Header('【%s】'%scheme + 'iOS客户端测试包构建完成, 构建时间:%s'%(time_Tag), 'utf-8').encode() #邮件主题
try:
server = smtplib.SMTP(smtp_host, 25)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, to_addr, msg.as_string())
print('邮件发送成功')
except smtplib.SMTPException:
print('Error:无法发送邮件')
finally:
server.quit() # 发送完毕后退出smtp
def main():
# 执行
# 清理目录
clean_project()
# 编译coocaPods项目文件并 执行编译目录
archive_project()
# 导出ipa
export_ipa()
if not isDistribution:
# 上传fir
success = upload_fir()
# 发邮件
if success:
send_mail()
main()
该脚本是把Distribution_ExportOptions.plist、Develop_ExportOptions.plist和脚本放在同一目录里面的
该脚本是针对xcode 8及以上版本的,低版本会出包失败
plist文件内容如下
provisioningProfiles
com.Y***ane
azur***_dev
method
development
signingCertificate
iPhone Developer
signingStyle
manual
teamID
42***ZL
compileBitcode
uploadSymbols
其中plist文件中的method参数有如下几个方法:{app-store, ad-hoc, enterprise, development}
python 手机自动化脚本_iOS python自动化出包脚本相关推荐
- python手机版安卓-用Python实现自动化操作Android手机
一.[必须]安装adb工具 adb全称Android Debug Bridge,是Android系统的调试工具. 下并安装ADB Installer v1.4.3,下载链接:http://pan.we ...
- python手机版下载官方-Python
Python是一款通用型的计算机程序设计语言,Python对编程人员来说是一款非常有利的工具,可以让您快速编写代码,而且代码运行速度非常快.Python具有非常简捷而清晰的语法特点,适合完成各种高层任 ...
- python手机版安卓-当python遇到Android手机 那么,万物皆可盘
嚣张开场 今天不跟大家讲python知识,是不很失望?No,看过了今天的内容,你python的装13指数,至少上升1w+,并附带暴击.溅射.眩晕.致盲效果.没错,就是这么嚣张..... 当python ...
- python手机app自动_python+appium 自动化1--启动手机京东app
出处:https://www.cnblogs.com/yoyoketang/p/6128735.html 前言: 环境搭建好了.接下来先体验下如何启动app--1.首先获取包名:2.然后获取launc ...
- python手机版iphone-只会Python可造不出iPhone
大数据文摘出品 编译:王缘缘.Ivy.小七.Aileen Python正成为计算机领域的红人,它的走红不仅仅因为它的简易语言设计和各种方便的调用包,还与各种培训课程中的营销般的吹捧不无关系. 在这些热 ...
- python反编译apk签名出包脚本
转载请标明原文地址:https://blog.csdn.net/zmjwf521/article/details/114885390 demo实现脚本下载 安装工具 需要python3,apktool ...
- python手机自动化测试工具_appium+python自动化测试
appium+python自动化测试 标签(空格分隔): appium 获取APP的包名 1.aapt即Android Asset Packaging Tool,在SDK的build-tools目录下 ...
- python手机版ios-使用Python写iOS自动化测试
写在之前 Xcode 7之前,苹果任然保留着automation这个简单上手的自动化测试工具,自需要录制脚本即可,在Xocde 7之后,随着UnitTests加入Xcode之后,这个一个功能就被关闭了 ...
- python手机壁纸_用Python生成自己专属的手机春节壁纸
点击上方" Python爬虫与数据挖掘 ",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 三军可夺帅也,匹夫不可夺志也. ...
最新文章
- Ubuntu常用命令大全[显示桌面]
- Ext.Net中常用的验证
- 《Web应用漏洞侦测与防御:揭秘鲜为人知的攻击手段和防御技术》——导读
- ArrayList的泛型可以不写吗
- AS插件-Android Parcelable code generator.
- opencv中的一些陷阱 坑死我了~~~~(_)~~~~
- pcb设计单点接地示意图_答案:关于PCB 的EMC设计知识考卷
- Spring Cloud 7:Gateway
- 前端学习(2578):Nuxt的核心原理
- Pytest脚本中运行用例方式
- Oracle Data Integrator之代理创建
- 【其他】编程技巧之常用缩写
- 【kafka】kafka broker 限流 topic 限流 配额
- Your shell has not been properly configured to use ‘conda activate‘. If your shell is Bash or a Bour
- 为什么我们应该使用 HTML5 开发网站
- 2014互联网十大斗殴事件,看了我也是醉了~
- linux考试不及格反思100字,考试没考好的反思总结(精选10篇)
- Latex002 | 详细教程:LaTeX 编译器哪个好?——如何在 Visual Studio Code 中全流程编写 LaTeX(上篇)
- 【学习笔记】C++ 核心编程(二)类和对象——封装
- 普通电脑U盘安装苹果系统简易方法