本文主要介紹 gradle 打包命令捣鲸,以及使用?python 腳本實(shí)現(xiàn)自動(dòng)打包 apk 上傳到蒲公英測(cè)試平臺(tái)瑟匆,并且發(fā)送郵件通知測(cè)試人員。?
gradle 打包命令介紹
./gradlew assembleDebug 編譯并打Debug包?
./gradlew assembleRelease 編譯并打Release的包
使用Android Studio創(chuàng)建一個(gè)新的工程栽惶,然后進(jìn)入工程的根目錄愁溜,然后在終端執(zhí)行命令:
./gradlew assembleRelease
打包成功提示:
BUILD SUCCESSFUL
此時(shí)在目錄:/app/build/outputs/apk/release/下面會(huì)生成apk安裝包。
如果你看到的是app-release-unsigned.apk命名的安裝包外厂,不要疑惑冕象。那是因?yàn)槟銢](méi)有在工程中配置簽名文件。
配置簽名文件
使用Android Studio生成一個(gè)新的簽名文件(Test123456是演示Demo的簽名文件名稱(chēng))汁蝶,然后在app/build.gradle文件中增加signingConfigs字段:
apply plugin: 'com.android.application'
android {
? ? compileSdkVersion 28
? ? defaultConfig {
? ? ? ? applicationId "com.example.test"
? ? ? ? minSdkVersion 16
? ? ? ? targetSdkVersion 28
? ? ? ? versionCode 1
? ? ? ? versionName "1.0"
? ? ? ? testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
? ? }
? ? signingConfigs {
? ? ? ? debug {
? ? ? ? ? ? File strFile = new File("../Test/Test123456")
? ? ? ? ? ? storeFile file(strFile)
? ? ? ? ? ? storePassword "123456"
? ? ? ? ? ? keyAlias "key0"
? ? ? ? ? ? keyPassword "123456"
? ? ? ? }
? ? ? ? release {
? ? ? ? ? ? File strFile = new File("../Test/Test123456")
? ? ? ? ? ? storeFile file(strFile)
? ? ? ? ? ? storePassword "123456"
? ? ? ? ? ? keyPassword "123456"
? ? ? ? ? ? keyAlias "key0"
? ? ? ? }
? ? }
? ? buildTypes {
? ? ? ? release {
? ? ? ? ? ? signingConfig signingConfigs.release
? ? ? ? ? ? minifyEnabled false
? ? ? ? ? ? proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
? ? ? ? }
? ? }
}
配置完簽名文件渐扮,我們?cè)僦匦聢?zhí)行打包命令(不要忘了buildTypes中的配置)。
使用命令打包成功掖棉。
python 腳本打包
你可能會(huì)說(shuō)墓律,我對(duì) python 一點(diǎn)都不懂呀!沒(méi)關(guān)系幔亥,下面的打包腳本耻讽,你都能看懂,不需要擔(dān)心紫谷。下載腳本文件autobuild.py
打包需要的一些配置信息
配置蒲公英
API_KEY = "xxxxxxxxxxxxxxxxxxxx"
PGYER_DESC = "xxxxxxxxxxxxxxxxxxxx"
上傳蒲公英我們需要配置蒲公英給我們分配的 API Key齐饮,以及版本描述信息捐寥。API Key是必填的,版本描述可以不傳或者為空祖驱,后面我們會(huì)介紹其他一些上傳信息握恳,比如安裝時(shí)是否需要密碼等等。
獲取?API Key 方式:
配置郵件
from_addr = "xxxx@163.com"
password = "xxxxxxxx"
smtp_server = "smtp.163.com"
to_addr = 'xxxx@xx.com'
發(fā)送郵件捺僻,我們需要配置發(fā)送郵件賬號(hào)乡洼、密碼、郵件 smtp服務(wù)器 以及收件人匕坯。我們還需要開(kāi)啟發(fā)送郵件的 SMTP服務(wù)束昵,這里以163郵件開(kāi)啟為例:
腳本介紹
打包apk
def build_apk():
? ? print "exporting..."
? ??build_com = "./gradlew assembleRelease"
????os.system(build_com)
上傳蒲公英
def upload_Pgyer():
? ? print "uploading..."
? ? apk_path = "./app/build/outputs/apk/release/app-release.apk"
? ? print "apk_path:"+apk_path
? ? apk_path = os.path.expanduser(apk_path)
? ? upload_com = "curl -F 'file=@%s' -F '_api_key=%s' -F 'buildUpdateDescription=%s' https://www.pgyer.com/apiv2/app/upload" % (apk_path,API_KEY,PGYER_DESC)
? ? os.system(upload_com)
buildUpdateDescription:(選填) 版本更新描述,可以傳空字符串葛峻,或不傳锹雏。
這是蒲公英給我們定義的接口說(shuō)明,里面有好多參數(shù)术奖,具體參數(shù)請(qǐng)看參數(shù)說(shuō)明
發(fā)送郵件
def send_mail():
? ? msg = MIMEText('Android測(cè)試項(xiàng)目已經(jīng)打包完畢礁遵,請(qǐng)前往 https://www.pgyer.com/xxxxx 下載測(cè)試!', 'plain', 'utf-8')
? ? msg['From'] = _format_addr('自動(dòng)打包系統(tǒng) <%s>' % from_addr)
? ? msg['To'] = _format_addr('測(cè)試人員 <%s>' % to_addr)
? ? msg['Subject'] = Header('Android客戶(hù)端打包程序', '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()
執(zhí)行打包腳本
將腳本文件放到你的工程根目錄采记,然后在終端執(zhí)行(Mac已經(jīng)自帶安裝了python環(huán)境佣耐,所以我們不用再安裝python運(yùn)行環(huán)境了):
python autobuild.py
成功之后,我們會(huì)在蒲公英后臺(tái)看到我們剛才上傳的應(yīng)用唧龄。
至此打包完成兼砖。