在一臺(tái)設(shè)備上安裝同一個(gè)應(yīng)用程序的不同版本

很多時(shí)候我們會(huì)有這樣一個(gè)需求澄港,版本迭代中當(dāng)前版本的開發(fā)和改bug工作已經(jīng)基本完畢,進(jìn)入后臺(tái)api切換到線上環(huán)境的測(cè)試階段进栽,這時(shí)候我們需要修改app代碼的情況已經(jīng)不多雷滋,后臺(tái)api的童鞋可能需要切換不同的環(huán)境做調(diào)試,而安裝不同環(huán)境app的測(cè)試設(shè)備數(shù)量是有限的种吸,所以最好能在一部測(cè)試設(shè)備上安裝幾個(gè)連接不同環(huán)境的apk弃衍,而且是同一個(gè)應(yīng)用程序,只是包名不同坚俗。
進(jìn)入正題镜盯。首先在module的build.gradle中配置幾個(gè)productFlavor:

android{
    ....
    productFlavors {
        releaseOnline {
            buildConfigField "int", "USE_SERVER", "0"
        }

        manualConfig {
            buildConfigField "int", "USE_SERVER", "0"
        }

        debug239 {
            applicationIdSuffix ".debug239" //定義不同包名,這一個(gè)productFlavor安裝后的包名是com.fenlibao.fenlibao.debug239
            buildConfigField "int", "USE_SERVER", "1" //自定義一個(gè)全局常量猖败,用來讀取不同配置
        }

        debug236 {
            applicationIdSuffix ".debug236"
            buildConfigField "int", "USE_SERVER", "2"
        }

        debugtem {
            applicationIdSuffix ".debugtem"
            buildConfigField "int", "USE_SERVER", "3"
        }
    }
    ....
}

其中定義applicationIdSuffix的作用是加后綴區(qū)分包名速缆,沒有指定applicationIdSuffix的則沿用原來的包名com.fenlibao.fenlibao。USE_SERVER的作用是為指定連接不同的服務(wù)器(環(huán)境)恩闻。定義了productFlavors之后就可以在Studio編輯界面的左側(cè)找到Build Variants面板艺糜,指定當(dāng)前app module的build variant(productFlavor + buildType),每一個(gè)productFlavor編譯后對(duì)USE_SERVER單獨(dú)賦值幢尚。

image.png

然后為了區(qū)分不同的環(huán)境破停,在手機(jī)上能夠一眼就辨認(rèn)出哪一個(gè)包連接的是哪一個(gè)環(huán)境,還需要改一下應(yīng)用名尉剩,例如連接236測(cè)試環(huán)境的真慢,就把應(yīng)用名命名為debug236,這個(gè)又怎么實(shí)現(xiàn)呢理茎?

image.png

在src目錄下創(chuàng)建目錄debug236黑界,再在debug236下創(chuàng)建目錄res,然后在res下創(chuàng)建Android resource directory

image.png

Source set選擇debug236皂林,目錄名values


image.png

在里面創(chuàng)建appname.xml朗鸠,寫上對(duì)應(yīng)的應(yīng)用名

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">debug236</string>
</resources>

同時(shí),我還希望不同的productFlavor打出來的包以相應(yīng)的productFlavor作為后綴命名础倍,那么在build.gradle里面可以這樣配置:

android{
....
   applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                if(variant.buildType.name.equals('release')){
                    def fileName = "fenlibao_V${defaultConfig.versionName}.apk"
                    output.outputFile = new File(outputFile.parent, fileName)
                }
                if(variant.buildType.name.equals('debug')){ //此處為debug版本配置不同的命名
                    def fileName = "fenlibao_V${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
                    output.outputFile = new File(outputFile.parent, fileName)
                }
            }
        }
    }
....
}

最后在讀取連接服務(wù)器的配置時(shí)烛占,根據(jù)當(dāng)前productFlavor連接不同的服務(wù)器地址:

    //0.239_測(cè)試環(huán)境;1.236_new測(cè)試環(huán)境;2.236_測(cè)試環(huán)境;3.212_測(cè)試環(huán)境;4.準(zhǔn)現(xiàn)網(wǎng);5.生產(chǎn)環(huán)境;
    private static final int SERVER = getServer();

    private static int getServer(){
        if("release".equals(BuildConfig.BUILD_TYPE)){//release版本,連接線上環(huán)境
            return 5;
        }

        if(BuildConfig.USE_SERVER == 1){//連接239
            return 0;
        }else if(BuildConfig.USE_SERVER == 2){//連接236
            return 1;
        }else if(BuildConfig.USE_SERVER == 3){//連接準(zhǔn)現(xiàn)網(wǎng)
            return 4;
        }

        return 1;
    }

展示一下成果:

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沟启,一起剝皮案震驚了整個(gè)濱河市扰楼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌美浦,老刑警劉巖弦赖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異浦辨,居然都是意外死亡蹬竖,警方通過查閱死者的電腦和手機(jī)沼沈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來币厕,“玉大人列另,你說我怎么就攤上這事〉┳埃” “怎么了页衙?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)阴绢。 經(jīng)常有香客問我店乐,道長(zhǎng),這世上最難降的妖魔是什么呻袭? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任眨八,我火速辦了婚禮,結(jié)果婚禮上左电,老公的妹妹穿的比我還像新娘廉侧。我一直安慰自己,他們只是感情好篓足,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布段誊。 她就那樣靜靜地躺著,像睡著了一般栈拖。 火紅的嫁衣襯著肌膚如雪连舍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天辱魁,我揣著相機(jī)與錄音烟瞧,去河邊找鬼诗鸭。 笑死染簇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的强岸。 我是一名探鬼主播锻弓,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蝌箍!你這毒婦竟也來了青灼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤妓盲,失蹤者是張志新(化名)和其女友劉穎杂拨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悯衬,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弹沽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片策橘。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡炸渡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出丽已,到底是詐尸還是另有隱情蚌堵,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布沛婴,位于F島的核電站吼畏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瘸味。R本人自食惡果不足惜宫仗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旁仿。 院中可真熱鬧藕夫,春花似錦、人聲如沸枯冈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)尘奏。三九已至滩褥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間炫加,已是汗流浹背瑰煎。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俗孝,地道東北人酒甸。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像赋铝,于是被迫代替她去往敵國(guó)和親插勤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理革骨,服務(wù)發(fā)現(xiàn)农尖,斷路器,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 轉(zhuǎn)載注明出處:http://www.reibang.com/p/5255b100930e 0. 前言 完全由個(gè)人翻...
    王三的貓阿德閱讀 2,501評(píng)論 0 4
  • feisky云計(jì)算良哲、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,815評(píng)論 0 5
  • 法號(hào)不羈閱讀 743評(píng)論 0 1
  • 《學(xué)會(huì)提問 · 批判性思維指南》的讀書筆記 一盛卡、批判性思維 什么是批判性思維 批判性思維是指通過對(duì)資料(演講、文章...
    靈淵閱讀 1,685評(píng)論 0 3