哈哈,放一张母校的照片,话说毕业就没回去过了。
1.jpg
最近公司很忙也没时间写点什么东西,刚好今天不忙,又刚好之前天天打包发版本,就自己网上整理了一下自动打IPA包的信息。因为之前有去学一点点Python,所以就用Python搞了这个东西。
言归正传,这个脚本用的是最新的Python语法写的,因为我也不会老的。
1、 安装Python3
Mac电脑自带Python2.7 所以我们需要下载Python3
2、安装Pycharm编辑器 也可以用Sublime 我之前用的就是Pycharm 所以就用的这个 网上有破解版
image.png
我这里已经安装了 所以是这样的,没有Homebrew可以装一个
image.png
3、开始写代码
基础的语法和iOS等任何语言没有什么区别,就是格式不一样了
#!/usr/bin/env python
import requests
import os
import webbrowser
import time
import subprocess
# 打包后的ipa文件路径
backupIPA = '/Users/***/Desktop/0.0.01'
# 应用对应蒲公英路径
openUrlPath = 'https://www.pgyer.com/manager/dashboard/app/2f6900***************b2bea0fc'
# 应用下载页
openDownLoadUrlPath = 'https://www.pgyer.com/*******'
# 项目scheme
schemeName = 'SuperT'
# 蒲公英账号USER_KEY、API_KEY及App_Key
USER_KEY = '2657a4***************c236811f'
API_KEY = '3398e57e***************1f0dec0a9'
App_Key = '2f69009***************b2bea0fc'
# clean工程
def cleanPro():
start = time.time()
if desDev == 1:
desDvStr = 'Release'
else:
desDvStr = 'Debug'
# cleanProRun = 'xcodebuild clean -project %s.xcodeproj -scheme %s ' \
#'-configuration %s'%(schemeName,schemeName,desDvStr)
# workspace工程
cleanProRun = 'xcodebuild clean -workspace %s.xcworkspace -scheme %s ' \
'-configuration %s'%(schemeName,schemeName,desDvStr)
print('%s' % cleanProRun)
cleanProRun = subprocess.Popen(cleanProRun, shell=True)
cleanProRun.wait()
end = time.time()
cleanReturnCode = cleanProRun.returncode
print('%s' % cleanReturnCode)
if cleanReturnCode != 0:
print("\n***************clean失败******耗时:%s秒***************\n" % (end - start))
else:
print("\n***************clean成功*********耗时:%s秒************\n" % (end - start))
archive()
# archive工程
def archive():
# 删除之前打包的ProgramIpa文件夹
subprocess.call(["rm","-rf", backupIPA])
time.sleep(1)
#在桌面上创建ProgramIpa文件夹
mkdir(backupIPA)
# subprocess.call(["mkdir","-p",backupIPA])
time.sleep(1)
start = time.time()
# xcodeproj工程
# archiveRun = 'xcodebuild archive -project %s.xcodeproj -scheme %s -archivePath ./build/%s.xcarchive'%(schemeName,schemeName,schemeName)
# archiveRun = 'xcodebuild archive -project %s.xcodeproj -scheme %s -archivePath %s/%s.xcarchive' % (
# schemeName, schemeName, backupIPA, schemeName)
# workspace工程
archiveRun = 'xcodebuild archive -workspace %s.xcworkspace -scheme %s' \
' -archivePath %s/%s.xcarchive'%(schemeName,schemeName,backupIPA,schemeName)
print("%s" % archiveRun)
archiveProcessRun = subprocess.Popen(archiveRun, shell=True)
archiveProcessRun.wait()
end = time.time()
# 获取Code码
archiveReturnCode = archiveProcessRun.returncode
print('%s' % archiveReturnCode)
if archiveReturnCode != 0:
print("\n***************archive失败******耗时:%s秒***************\n" % (end - start))
else:
print("\n***************archive成功*********耗时:%s秒************\n" % (end - start))
exportIPA()
def exportIPA():
start = time.time()
exportRun = 'xcodebuild -exportArchive -archivePath %s/%s.xcarchive -exportPath %s/%s -exportOptionsPlist ./ExportOptions.plist' % (
backupIPA, schemeName, backupIPA, schemeName)
print('++++++%s' % exportRun)
exportProcessRun = subprocess.Popen(exportRun, shell=True)
exportProcessRun.wait()
# 结束时间
end = time.time()
# 获取Code码
exportReturnCode = exportProcessRun.returncode
if exportReturnCode != 0:
print("\n***************导出IPA失败*********耗时:%s秒************\n" % (end - start))
else:
print("\n***************导出IPA成功*********耗时:%s秒************\n" % (end - start))
os.chdir(backupIPA)
# 移除xcarchive
subprocess.getoutput('rm -rf ./*.xcarchive')
time.sleep(1)
uploadIPA('%s/%s/%s.ipa' % (backupIPA, schemeName, schemeName))
# 上传蒲公英
def uploadIPA(IPAPath):
if (IPAPath == ""):
print("\n***********************************没有找到关联IPA包******************************************\n")
return
else:
print("\n***********************************IPA包开始上传到蒲公英**************************\n")
url = 'http://www.pgyer.com/apiv1/app/upload'
data = {
'uKey':USER_KEY,
'_api_key':API_KEY,
'installType':'2',
'password':'123456',
'updateDescription':'des'
}
files = {'file':open(IPAPath, 'rb')}
r = requests.post(url, data=data, files=files)
def openDownloadUrl():
webbrowser.open('%s%s' % (openUrlPath, App_Key), new=1,autoraise=True)
time.sleep(3)
webbrowser.open(openDownLoadUrlPath,new=1,autoraise=True)
print("\n*************** IPA上传更新成功 *********************\n")
def mkdir(backupIPA):
isExists = os.path.exists(backupIPA)
if not isExists:
os.makedirs(backupIPA)
print(backupIPA+'创建成功')
return True
else:
print(backupIPA + '目录已经存在')
return False
if __name__ == '__main__':
des = input("请输入更新的日志描述:")
desDev = input('请输入编译环境 1、Release 2、Debug:')
cleanPro()
可能在配置Python库的时候,会碰到一些问题,pip的版本不够,或者是找不到匹配的库,可以自己上网百度,可以留言问我。可能我也不是很懂,大家一起研究。
然后就是执行Python文件了,ExportOptions.plist 需要填写项目的bundleId,和描述文件名字
image.png
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>provisioningProfiles</key>
<dict>
<key>***bundleId**</key>
<string>***描述文件名字**</string>
</dict>
<key>compileBitcode</key>
<false/>
<key>method</key>
<string>ad-hoc</string>
</dict>
</plist>
执行指令 Python3 index.py
image.png好了,就这样吧。不懂问我
QQ:1184922307 备注
网友评论