自動(dòng)打包分為兩部分
-生成archive文件
-從archive文件中導(dǎo)出ipa包
生成archive包
在這里就需要使用到xcodebuild命令
對(duì)于普通的project命令為:
xcodebuild archive -project project的名稱(chēng).xcodeproj -scheme 應(yīng)用名稱(chēng) -configuration 構(gòu)造配置 -archivePath 期望保存的路徑
對(duì)于workspace 則命令為
xcodebuild archive -workspace workspace的名稱(chēng).xcworkspace -scheme 應(yīng)用名稱(chēng) -configuration 構(gòu)造配置 -archivePath 期望保存的路徑
關(guān)于exportOptionPlist 是打包的配置信息(如是否支持bitecode,證書(shū)與描述文件.....)大概如下
在我的腳本中并沒(méi)有對(duì)其進(jìn)行自動(dòng)生成,我的建議是手動(dòng)打包一次 然后在打好的包中找到該文件保存起來(lái) 一勞永逸
當(dāng)archive文件生成成功后 則須從中導(dǎo)出ipa包
xcodebuild -exportArchive -archivePath archive文件路徑 -exportPath 打包后期望保存的路徑 -exportOptionsPlist 導(dǎo)出配置的相關(guān)信息的plist文件
上傳至蒲公英
根據(jù)蒲公英文檔 API2.0 命令行如下
curl -F 'file=@ipa包的路徑' -F '_api_key=蒲公英提供的AppKey' https://www.pgyer.com/apiv2/app/upload
在了解的步驟之后 只需要腳本將這些命令行組合起來(lái) 在其中插入自己需要的操作,如對(duì)測(cè)試人員的通知,當(dāng)前狀態(tài)的輸出等等....(我沒(méi)有這塊的需求,就沒(méi)有寫(xiě)了)
最后附上代碼 因?yàn)榇a不長(zhǎng) 我就直接寫(xiě)在這里了
#! /usr/bin/env python3
import os
####################### 須用戶(hù)配置 ##############################
#將要上新的版本描述
updateDescription = ''
# 項(xiàng)目路徑
projectPath = ''
# 項(xiàng)目名稱(chēng)
projectName = '
# 打包路徑
IPASavePath = ''
# exportOptionPlist文件路徑
exportOptionPlistPath = ''
#蒲公英App_Key
pgy_appKey = ''
##################################################################
#生成的Archive文件的路徑
archivePath = IPASavePath + '/' +projectName + 'Archive'
#生成的ipa包的路徑
IpaPath = IPASavePath + '/Apps/' + projectName + '.ipa'
# 清屏
def clearScreen():
os.system('clear')
os.chdir(projectPath)
# 生成archive文件
def makeArchive():
os.system('xcodebuild archive -workspace %s.xcworkspace -scheme %s -configuration Release -archivePath %s'%(projectName,projectName,archivePath))
# 生成iPa包
def makeIpa():
os.system('xcodebuild -exportArchive -archivePath %s.xcarchive -exportPath %s -exportOptionsPlist %s'%(archivePath,IPASavePath,exportOptionPlistPath))
# 上傳至蒲公英
def upLoadToPGYer():
res = (os.popen("curl -F 'file=@%s' -F '_api_key=%s' -F'updateDescription=%s' https://www.pgyer.com/apiv2/app/upload"%(IpaPath,pgy_appKey,updateDescription))).readlines()
#自動(dòng)打包
def automaticPack():
clearScreen()
makeArchive()
makeIpa()
upLoadToPGYer()
automaticPack()