iOS自動打包ipa上傳到蒲公英并發(fā)送郵件

本文主要介紹 xcodebuild 常用打包命令,以及使用?python 腳本實現(xiàn)自動打包 ipa 上傳到蒲公英測試平臺,并且發(fā)送郵件通知測試人員。?

互聯(lián)網(wǎng)創(chuàng)業(yè)不在于有多少人開始創(chuàng)辦公司,而在于有多少人能堅持到底。

xcodebuild 簡介

xcodebuild 是蘋果提供的打包工程的命令

1.需要在包含 name.xcodeproj 的目錄下執(zhí)行 xcodebuild 命令,且如果該目錄下有多個 projects,那么需要使用 -project 指定需要 build 的項目。

2.在不指定 build 的 target 的時候,默認(rèn)情況下會 build project 下的第一個 target。

3.當(dāng) build workspace 時,需要同時指定 -workspace 和 -scheme 參數(shù),scheme 參數(shù)控制了哪些 targets 會被 build 以及以怎樣的方式 build。

xcodebuild 常用命令:

1.xcodebuild -version 查看xcode工具的版本號和build版本號

2.xcodebuild -showsdks 顯示當(dāng)前系統(tǒng)的SDK、及其版本

3.xcodebuild -list 先 cd 到工程目錄下執(zhí)行此命令 顯示target Schemes 等

注意:

Xcode 升級到8.3后,打包命令使用 exportArchive 替換了 PackageApplication 進(jìn)行打包。這里我們需要配置一個?exportIpaOption.plist 文件,此文件里聲明了我們打包時的 Profiles(預(yù)制描述文件)以及一些其他配置。

exportIpaOption.plist

如果你不知道這個文件怎么配置,你可以先手動用 Xcode 打一個包,包里的?ExportOptions.plist 文件就是我們自動打包需要的這個文件。如下圖:

ExportOptions.plist 文件

非 cocoaPods 項目的編譯、打包

第一步:編譯

編譯命令

xcodebuild archive?-scheme 工程scheme名稱?-archivePath 編譯后archive文件路徑 -configuration Release

示例:

xcodebuild archive?-scheme Test?-archivePath ./build/archive/Test.xcarchive -configuration Release

打開終端 cd 到你的工程根目錄,然后執(zhí)行編譯命令。編譯成功提示信息如下:

** ARCHIVE SUCCEEDED **

第二步:打包

打包命令

xcodebuild -exportArchive -archivePath 編譯時archive文件路徑?-exportPath?ipa安裝包路徑 -exportOptionsPlist exportIpaOption.plist

示例:

xcodebuild -exportArchive -archivePath ./build/archive/Test.xcarchive?-exportPath./build/ipa/Test.ipa?-exportOptionsPlist exportIpaOption.plist

編譯完成后,接著執(zhí)行打包命令。打包成功提示信息如下:

** EXPORT SUCCEEDED **

到這里,使用命令就打包成功了。會在工程根目錄下生成一個 build/ipa 文件夾,里面存放的就是我們需要的 ipa 安裝包。

使用了 CocoaPods 項目的編譯、打包

第一步:編譯

編譯命令

xcodebuild archive?-workspace Test.xcworkspace?-scheme Test?-archivePath ./build/archive/Test.xcarchive -configuration Release

第二步:打包

打包命令

xcodebuild -exportArchive -archivePath ./build/archive/Test.xcarchive?-exportPath./build/Test.ipa?-exportOptionsPlist exportIpaOption.plist

到這里,你是不是很激動,稍作整理,接下來,我們怎么通過 python 腳本去自動化執(zhí)行上面的命令。


一:python 腳本打包

你可能會說,我對 python 一點(diǎn)都不懂呀!沒關(guān)系,如果你對自己的編程能力挺自信的話,下面的打包腳本,你都能看懂,不需要擔(dān)心。下載腳本文件autobuild.py

配置打包需要的一些信息

1、配置工程

# 項目 scheme 名稱(一般就是我們的工程名稱)

project_scheme = "xxxx"

# 指定項目下 build 編譯目錄(存放在工程根目錄 build 文件里)

build_path = "./build"

# 指定項目下 archive 編譯目錄

archive_path = build_path + "/archive/temp.xcarchive"

# 打包后ipa存儲目錄(存放在工程目錄 build 里的 ipa 文件里)

targer_ipa_path = build_path + "/ipa"

這里我們只需要修改?project_scheme 即可,其他都可以采用默認(rèn)信息。

2、配置蒲公英

# 配置蒲公英KEY

API_KEY = "xxxxxxxxxxxxxxxxxxxx"

# 配置蒲公英更新描述信息

PGYER_DESC = "xxxxxxxxxxxxxxxxxxxx"

上傳蒲公英我們需要配置蒲公英給我們分配的 API Key,以及版本描述信息。API Key是必填的,版本信息可以不傳或者為空,后面我們會介紹其他一些上傳信息,比如是否需要安裝密碼等等。

獲取?API Key 方式:

API Key

3、配置郵件

# 郵件信息

from_addr = "xxxx@163.com"

password = "xxxxxxxx"

smtp_server = "smtp.163.com"

to_addr = 'xxxx@xx.com'

發(fā)送郵件,我們需要配置發(fā)送郵件賬號、密碼、郵件 smtp服務(wù)器 以及收件人。我們還需要開啟發(fā)送郵件的 SMTP服務(wù),這里以163郵件開啟為例:

SMTP服務(wù)

二:腳本介紹

第一步:清理項目 build目錄

每次打包前,我們會清理上次的build目錄

def clean_project_build():

? ? os.system("rm -r %s" % (build_path))

? ? print "\n** CLEAN ARCHIVE FILE SUCCEEDED **\n"

第二步:編譯

def build_project():

? ? os.system('xcodebuild archive -scheme %s -archivePath %s -configuration Release' % (project_scheme,archive_path))

第三步:打包ipa

def build_ipa():

? ? global ipa_filename

? ? ipa_filename = time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))

? ? os.system ('xcodebuild -exportArchive -archivePath %s -exportPath %s/%s -exportOptionsPlist exportIpaOption.plist'%(archive_path,targer_ipa_path,ipa_filename))

第四步:上傳蒲公英

def upload_Pgyer():

? ? ipa_path = ("%s/%s/%s.ipa" % (targer_ipa_path,ipa_filename,project_scheme))

? ? print "ipaPath:"+ipa_path

? ? ipa_path = os.path.expanduser(ipa_path)

? ? upload_com = "curl -F 'file=@%s' -F '_api_key=%s' -F 'buildUpdateDescription=%s' https://www.pgyer.com/apiv2/app/upload" % (ipa_path,API_KEY,PGYER_DESC)

? ? os.system(upload_com)

? ? print "\n** UPLOAD TO PGYER SUCCEEDED **\n"

buildUpdateDescription:(選填) 版本更新描述,請傳空字符串,或不傳。

這是蒲公英給我們定義的接口說明,里面有好多參數(shù),具體參數(shù)請看參數(shù)說明

蒲公英上傳API地址

第四步:發(fā)郵件

def send_mail():

? ? msg = MIMEText('iOS測試項目已經(jīng)打包完畢,請前往 https://www.pgyer.com/xxxxx 下載測試!', 'plain', 'utf-8')

? ? msg['From'] = _format_addr('自動打包系統(tǒng) <%s>' % from_addr)

? ? msg['To'] = _format_addr('測試人員 <%s>' % to_addr)

? ? msg['Subject'] = Header('iOS客戶端打包程序', 'utf-8').encode()

? ? server = smtplib.SMTP(smtp_server)

? ? server.ehlo()

? ? server.starttls()

? ? server.ehlo()

? ? server.login(from_addr, password)

? ? server.sendmail(from_addr, [to_addr], msg.as_string())

? ? server.quit()

? ? print "\n** SEND EMAIL SUCCEEDED **\n"

文中的腳本是以打包非 CocoaPods 項目為例,實際中我們的項目大多都是采用?CocoaPods 的,第一小節(jié)我們已經(jīng)介紹了使用了 CocoaPods 項目的編譯、打包的命令,只需要在腳本里替換一下?xcodebuild 編譯的命令即可,相信這點(diǎn)難不倒你。

第五步:執(zhí)行腳本

將腳本文件放到你的工程根目錄,然后在終端執(zhí)行:

python autobuild.py

Mac已經(jīng)自帶安裝了python環(huán)境,所以我們不用再安裝python運(yùn)行環(huán)境了。

參考文章:

iOS自動打包并發(fā)布腳本

iOS 本地自動打包工具

可能遇到的問題:

xcode-select: error: tool 'xcodebuild' requires Xcode

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容