看了LinXunFeng大佬的这篇文章,我才知道不必每次都打包,还可以这样发包,不过大佬的脚本太难懂了,我自己写了一个,搭配vscode,每次只要按一下F5就可以发包,简直太爽了,这里分享一下自己的代码,只需要填入你自己的蒲公英appkey就可以发包了
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
#Filename :appArchive.py
#Datatime :2022/01/26 14:59:20
#Author :vicnic
import os
import shutil
from zipfile import ZipFile
import requests
#.app的路径
app_path = '/Users/apple/Library/Developer/Xcode/DerivedData/MergeDragon-gdggjgmohmdofbepykqwoctqwmzi/Build/Products/Debug-iphoneos/MergeDragon.app'
#把包先拷贝到下载文件夹准备开干
destin_path = '/Users/apple/Downloads/Payload'
#zip生成的路径
zip_path = '/Users/apple/Downloads'
#蒲公英的appkey
pgy_appkey = ''
def start():
app_name = app_path.split('/')[-1]
if (os.path.exists(destin_path)==False):
os.makedirs(destin_path)
final_path = destin_path+'/'+app_name
shutil.copytree(app_path, final_path)
os.chdir(zip_path)
zip_file_name = 'Payload'
folder2zip(zip_file_name)
ipa_path = 'Payload.ipa'
os.rename(zip_file_name+'.zip',ipa_path)
ipa_file = {"file":open(ipa_path,"rb")}
ipa_byte = os.path.getsize(ipa_path)
r = requests.post('https://www.pgyer.com/apiv2/app/upload',data= {'_api_key':pgy_appkey},files = ipa_file,stream=True)
print(r.content)
shutil.rmtree(zip_file_name)
os.remove(ipa_path)
def folder2zip(folder): #文件夹打包为zip的函数
zipfile_name = os.path.basename(folder) + '.zip'
if not os.path.exists(zipfile_name): #检查压缩包是否存在,如果已存在则询问是否继续
backupZip(folder)
else:
response = input("Zipfile exists. Coutinue?('q' for quit): ")
if response != 'q':
backupZip(folder)
def backupZip(folder): #这个函数只做文件夹打包的动作,不判断压缩包是否存在
zipfile_name = os.path.basename(folder) + '.zip' #压缩包和文件夹同名
with ZipFile(zipfile_name, 'w') as zfile: #以写入模式创建压缩包
for foldername, subfolders, files in os.walk(folder): #遍历文件夹
# print('Adding files in ' + foldername +'...')
zfile.write(foldername)
for i in files:
zfile.write(os.path.join(foldername,i))
# print('Adding ' + i)
print('Zip Done.')
if __name__ == '__main__':
start()