android實(shí)現(xiàn)一鍵打包上傳apk

前言

測試是我們開發(fā)中不可缺少的一個(gè)環(huán)節(jié)躬存,我們一般都會有自己的測試環(huán)境茄唐,我們的測試apk可能會放在我們的內(nèi)網(wǎng)上息裸,也可能會放在三方測試平臺,比如fir.im沪编、蒲公英等等呼盆,但是有時(shí)會出現(xiàn)沒有合適的位置訪問安裝包,又考慮三方平臺的安全性問題漾抬,這時(shí)就尷尬了宿亡,這篇文章就是講的如何去解決這一麻煩常遂。

關(guān)于python腳本

腳本在后端開發(fā)中很常見纳令,比如發(fā)版上線、跑批量等等,但是在移動端開發(fā)中顯得沒有那么重要了平绩,但是腳本在一些方面是很方便的圈匆。Gradle的打包過程可以認(rèn)為是腳本,自動化測試也可以理解為腳本捏雌,在一些場景中我們可以吧一些重復(fù)的工作交給腳本來做跃赚。

常見的場景--打包交付測試

在平時(shí)的開發(fā)中,我們可能需要打包給測試人員性湿,傳統(tǒng)的方式是usb線運(yùn)行adb命令給每個(gè)測試打新包纬傲,這個(gè)過程除了和測試的溝通外,還得測試機(jī)一個(gè)個(gè)連接電腦肤频,顯然叹括,每個(gè)移動端開發(fā)都不希望做這些重復(fù)累贅的工作,那怎么來解決這個(gè)問題呢宵荒?很多公司可能都有這么一個(gè)測試平臺的地址汁雷,我們打包的測試包都會放在這個(gè)測試平臺上,每次新版本發(fā)布后报咳,測試人員用測試機(jī)從上面下載下來安裝測試侠讯,這是常見的解決方案。但是打包上傳流程暑刃,還得手動去做厢漩,一個(gè)好的程序猿,一定是個(gè)“懶”程序猿岩臣,所以我們來嘗試省去手動上傳的這個(gè)步驟袁翁。

利用python實(shí)現(xiàn)一句命令打包上傳測試

我們來分析上面的這個(gè)場景,首先:我們使用AndroidStudio打包測試apk婿脸;其次:打包好的apk需要放置在我們的測試平臺上粱胜;最后:測試人員在手機(jī)瀏覽器輸入apk的地址下載安裝apk。對于第一條狐树,這個(gè)我們使用gradle的task比如assembleDebug去完成焙压,第二條,我們需要知道測試平臺的地址抑钟、賬號涯曲、相關(guān)目錄等,這里我本地起一個(gè)apache的服務(wù)來模擬這么個(gè)場景在塔,你在平時(shí)開發(fā)中也可以這么做幻件,我用的mac,起apache的命令是sudo apachectl start蛔溃,我們把a(bǔ)pk拷貝到apache的一個(gè)固定目錄下绰沥,最后測試人員輸入這個(gè)地址就可以訪問到了篱蝇,當(dāng)然都必須在同一局域網(wǎng)內(nèi)。

按照上面的流程我們一步步來做:我們知道AndroidStudio的打包是依賴gradle的徽曲,gradle運(yùn)行不同的task去實(shí)現(xiàn)打不同的包零截,我們自定義一個(gè)task

task debugApkToWeb{
    dependsOn 'assemble開發(fā)Debug'
}

這個(gè)task是包裹在android {}中的,關(guān)于gradle的介紹可以去看網(wǎng)上的分享秃臣,這里就不展開了涧衙。

python代碼部分,比較簡單

import os
import shutil

//獲取該目錄下的文件列表
alllist = os.listdir("/Users/xxx/AndroidStudioProjects/Android/app/build/outputs/apk/")
//遍歷
for i in alllist:
     //如果文件是以apk結(jié)尾繼續(xù)
     if (i.endswith(".apk")):
        //分割文件名和文件后綴
        aa,bb = i.split(".")
        //舊文件
        oldname = "/Users/xxx/AndroidStudioProjects/Android/app/build/outputs/apk/"+aa+"."+bb
        //新文件
        newname = "/Library/WebServer/Documents/"+aa+"."+bb
        //拷貝
        shutil.copyfile(oldname,newname)
        //打印
        print aa

10行代碼完成文件拷貝奥此,不要太爽

拷貝完成弧哎,我們的任務(wù)就算是結(jié)束了,告訴測試人員新版發(fā)布完成就可以了稚虎。不要太爽啊傻铣,哈哈哈。

我們把gradle的task補(bǔ)充完整:

task debugApkToWeb(type: Exec){
        dependsOn 'assembleDebug'
        commandLine "./gradlew","clean"
        commandLine "sudo","python","/Users/xxx/AndroidStudioProjects/Android/copyApkToApacheDocument.py"
}

使用方法祥绞,Terminal切換項(xiàng)目根目錄非洲,運(yùn)行命令:

./gradlew debugApkToWeb

后續(xù)

這里還有一個(gè)小技巧,我們的各種環(huán)境打出不同的包蜕径,為了方便識別两踏,我們可以定制不同的logo,logo上寫上不同的字就可以了兜喻。然后我們在app的build.gradle中使用

manifestPlaceholders = [app_icon: "@mipmap/ic_launcher_xxx",
                                    app_name: "xxx"]

manifest的application中

<application
        android:name=".xxx"
        android:icon="${app_icon}"
        android:label="${app_name}">

如果想安裝多個(gè)app梦染,flavor中的每個(gè)product可以加上

applicationIdSuffix ".xxx"

如果適配了安卓7.0,安卓app的時(shí)候可能出現(xiàn)報(bào)錯(cuò):安裝應(yīng)用出現(xiàn)重復(fù)的內(nèi)容提供者朴皆,這是因?yàn)槲覀兊膍anifest中的<provider/>標(biāo)簽的android:authorities相同帕识,改成當(dāng)前的包名就可以了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末遂铡,一起剝皮案震驚了整個(gè)濱河市肮疗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扒接,老刑警劉巖伪货,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異钾怔,居然都是意外死亡碱呼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門宗侦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來愚臀,“玉大人,你說我怎么就攤上這事矾利」昧眩” “怎么了馋袜?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長炭分。 經(jīng)常有香客問我,道長剑肯,這世上最難降的妖魔是什么捧毛? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮让网,結(jié)果婚禮上呀忧,老公的妹妹穿的比我還像新娘。我一直安慰自己溃睹,他們只是感情好而账,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著因篇,像睡著了一般泞辐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竞滓,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天咐吼,我揣著相機(jī)與錄音,去河邊找鬼商佑。 笑死锯茄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的茶没。 我是一名探鬼主播肌幽,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抓半!你這毒婦竟也來了喂急?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤笛求,失蹤者是張志新(化名)和其女友劉穎煮岁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涣易,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡画机,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了新症。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片步氏。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖徒爹,靈堂內(nèi)的尸體忽然破棺而出荚醒,到底是詐尸還是另有隱情芋类,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布界阁,位于F島的核電站侯繁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏泡躯。R本人自食惡果不足惜贮竟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望较剃。 院中可真熱鬧咕别,春花似錦、人聲如沸写穴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啊送。三九已至偿短,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間馋没,已是汗流浹背翔冀。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留披泪,地道東北人纤子。 一個(gè)月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像款票,于是被迫代替她去往敵國和親控硼。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,264評論 25 707
  • 這一章主要針對項(xiàng)目中可以用到的一些實(shí)用功能來介紹Android Gradle艾少,比如如何隱藏我們的證書文件卡乾,降低風(fēng)險(xiǎn)...
    acc8226閱讀 7,644評論 3 25
  • 前言 為什么需要學(xué)Gradle? Gradle 是 Android 現(xiàn)在主流的編譯工具,雖然在Gradle 出現(xiàn)之...
    真笨笨魚閱讀 1,494評論 0 0
  • 參考資料:http://gold.xitu.io/post/580c85768ac247005b5472f9htt...
    zhaoyubetter閱讀 11,003評論 0 6
  • 穿越河海 走過大橋 我知道 已經(jīng)回不去那座小島了
    玖知貓閱讀 132評論 0 0