Gradle For Android(二) 多渠道打包與簽名配置

《Gradle For Android(二) 多渠道打包與簽名配置》
轉(zhuǎn)載請(qǐng)注明來自 傻小孩b_移動(dòng)開發(fā)http://www.reibang.com/users/d388bcf9c4d3)喜歡的可以關(guān)注我宵晚,不定期總結(jié)文章换衬!您的支持是我的動(dòng)力哈药版!

Gradle For Android 導(dǎo)讀

繼上一篇Gradle基礎(chǔ)篇后师倔,現(xiàn)在記錄下如何在gradle中進(jìn)行多渠道打包與簽名配置

身為程序猿,谷歌被墻是眾所周知的事情~因此,估計(jì)好多人都還沒見過google play store。也許是在玩pokemon go物臂,有特意去搞過吧哈~所以呢,現(xiàn)今國(guó)內(nèi)有許多應(yīng)用市場(chǎng)产上,什么小米棵磷、華為、360晋涣、百度等等仪媒,所以每次可能需要發(fā)版幾十個(gè)渠道包。但是gradle為我們提供productFlavors谢鹊,我們可以獨(dú)立對(duì)應(yīng)渠道進(jìn)行私有定制打包算吩。

哎呀,一下跑偏了〉瓒螅現(xiàn)在直接記錄下Gradle For Android(二)偎巢,gradle對(duì)多渠道管理以及對(duì)apk進(jìn)行簽名信息配置的流程,剛剛接觸的可以轉(zhuǎn)身到第一篇文章兼耀,謝謝~

前提

首先得了解下BuildTypes压昼、Flavors求冷、BuildVariants三個(gè)定義:
1、BuildTypes : 構(gòu)建類型窍霞,AndroidStudio的Gradle組件默認(rèn)提供給了“debug”“release”兩個(gè)配置匠题。
2、Flavors : 產(chǎn)品渠道官撼,可以根據(jù)productFlavors梧躺,針對(duì)不同的渠道配置個(gè)性化apk
3似谁、BuildVariants:每一個(gè)buildtype和flavor組成一個(gè)buildvariant

一傲绣、多渠道個(gè)性化定制

(一)簡(jiǎn)單渠道定義

不做任何定制,只是提供渠道名稱巩踏,只需要在application中的build.gradle秃诵,android作用域中添加productFlavors,例如以下代碼:

productFlavors {//多渠道打包
    xiaomi { //小米渠道
    }
    googlepaly { //google play 渠道
    }
    huawei { //華為渠道
    }
    baidu { //百度 渠道
    }
}

如果沒有錯(cuò)誤情況塞琼,我們會(huì)在Android studio的BuildVariant看到對(duì)應(yīng)的渠道菠净,如圖所示:

buildvariant.png
(二)個(gè)性自定義

Gradle組件為多渠道打包提供了許多方便的方法,開發(fā)者可以根據(jù)不同的渠道配置打包不同的apk彪杉,例如文件名毅往、包名、編譯資源等等派近。在這里舉例下:

1攀唯、不同渠道編譯不同的包名
productFlavors {//多渠道打包
    xiaomi { //小米渠道
        applicationId 'com.yuan.agradle1'//個(gè)性定制,小米市場(chǎng)包名不同
    }
    googlepaly { //google play 渠道
        applicationId 'com.yuan.agradle2'
    }
}

打包結(jié)束后渴丸,我們輸出下包名看看結(jié)果:

package_google.png
package_xiaomi.png
2侯嘀、不同渠道編譯指定不同的資源類型

看過第一篇文章的筆者,不知道是否還記得sourceSets 這個(gè)字段谱轨,可以自定義指定編譯的資源路徑戒幔。渠道不同可否編譯資源不同?這個(gè)答案是肯定的土童,必須可以诗茎!(這里我demo沒有做出舉例,只是注釋)

xiaomi { //小米渠道
    applicationId 'com.yuan.agradle1'//個(gè)性定制献汗,小米市場(chǎng)包名不同
    //以下指定編譯資源
    java.srcDirs = ['src/main1', 'src/main1/java/']
    res.srcDirs = ['src/main1/res']
    assets.srcDirs = ['assets1']

}
googlepaly { //google play 渠道
    applicationId 'com.yuan.agradle2'
    //以下指定編譯資源
    java.srcDirs = ['src/main2', 'src/main2/java/']
    res.srcDirs = ['src/main2/res']
    assets.srcDirs = ['assets2']
}
3敢订、自定義打包apk名稱

寫的兩個(gè)方法我就不粘貼了哈,具體看demo

//修改輸出apk名字
applicationVariants.all { variant ->

    if (variant.buildType.name.equals('release')) {
        variant.outputs.each { output ->
            def appName = 'AGradle'
            def oldFile = output.outputFile
            def buildName
            def releaseApkName

            variant.productFlavors.each { product ->
                buildName = product.name
            }

            releaseApkName = appName + getVersionByMainfest() + '-' + buildName + '-' + getNowTime() + '.apk'
            output.outputFile = new File(oldFile.parent, releaseApkName)
        }
    }
}
4雀瓢、渠道的統(tǒng)一配置

如果需要在不同渠道統(tǒng)一配置枢析,可以使用productFlavors.all字段,例如以下:

productFlavors.all { 
        //...
}

二刃麸、簽名配置

簽名主要有兩種方式醒叁,手動(dòng)簽名打包與自動(dòng)簽名。現(xiàn)在分別舉例下兩種方式:

(一)手動(dòng)簽名打包
signed_1.png

創(chuàng)建一個(gè)簽名文件,填入這些內(nèi)容即可:

signed_2.png

使用剛剛簽名的文件把沼,輸入密碼進(jìn)行簽名打包:

signed_3.png

選擇打包渠道:

signed_4.png

等待一段時(shí)間后就可以查看結(jié)果了~

signed_5.png
(二)自動(dòng)簽名

自動(dòng)簽名呢啊易,是在我們的application中的build.gradle,先配置好簽名文件信息饮睬,當(dāng)然我們要先創(chuàng)建好一個(gè)簽名文件哈租谈,具體配置代碼如下:

signingConfigs {
    debug {
        keyAlias 'yuan'
        keyPassword '12345678'
        storeFile file("../agradle.jks")//這里我放在project根目錄下,根據(jù)路徑配置
        storePassword '12345678'
    }
    release {
        keyAlias 'yuan'
        keyPassword '12345678'
        storeFile file("../agradle.jks")
        storePassword '12345678'
    }
}

希望對(duì)有些開發(fā)者有幫助具體查看可以github上的demo捆愁,也歡迎加入開發(fā)交流群哈割去,詳情看個(gè)人簡(jiǎn)介。下一篇是對(duì)gradle的優(yōu)化昼丑,以及一些使用技巧呻逆,歡迎讀者閱讀

DEMO

Gradle For Android(二) 多渠道打包與簽名配置

傻小孩b mark共勉,寫給在成長(zhǎng)路上奮斗的你

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末菩帝,一起剝皮案震驚了整個(gè)濱河市咖城,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呼奢,老刑警劉巖宜雀,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異握础,居然都是意外死亡辐董,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門弓候,熙熙樓的掌柜王于貴愁眉苦臉地迎上來郎哭,“玉大人,你說我怎么就攤上這事菇存】溲校” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵依鸥,是天一觀的道長(zhǎng)亥至。 經(jīng)常有香客問我,道長(zhǎng)贱迟,這世上最難降的妖魔是什么姐扮? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮衣吠,結(jié)果婚禮上茶敏,老公的妹妹穿的比我還像新娘。我一直安慰自己缚俏,他們只是感情好惊搏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布贮乳。 她就那樣靜靜地躺著,像睡著了一般恬惯。 火紅的嫁衣襯著肌膚如雪向拆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天酪耳,我揣著相機(jī)與錄音浓恳,去河邊找鬼。 笑死碗暗,一個(gè)胖子當(dāng)著我的面吹牛颈将,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播讹堤,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼吆鹤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼厨疙!你這毒婦竟也來了洲守?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤沾凄,失蹤者是張志新(化名)和其女友劉穎梗醇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撒蟀,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叙谨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了保屯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片手负。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖姑尺,靈堂內(nèi)的尸體忽然破棺而出竟终,到底是詐尸還是另有隱情,我是刑警寧澤切蟋,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布统捶,位于F島的核電站,受9級(jí)特大地震影響柄粹,放射性物質(zhì)發(fā)生泄漏喘鸟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一驻右、第九天 我趴在偏房一處隱蔽的房頂上張望什黑。 院中可真熱鬧,春花似錦堪夭、人聲如沸愕把。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)礼华。三九已至咐鹤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間圣絮,已是汗流浹背祈惶。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扮匠,地道東北人捧请。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像棒搜,于是被迫代替她去往敵國(guó)和親疹蛉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,072評(píng)論 25 707
  • 這一章主要針對(duì)項(xiàng)目中可以用到的一些實(shí)用功能來介紹Android Gradle力麸,比如如何隱藏我們的證書文件可款,降低風(fēng)險(xiǎn)...
    acc8226閱讀 7,606評(píng)論 3 25
  • 最近在項(xiàng)目中遇到需要實(shí)現(xiàn) Apk 多渠道、定制化打包克蚂, Google 闺鲸、百度查找了一些資料,成功實(shí)現(xiàn)了上述功能埃叭,在...
    看一季殘花落幕閱讀 2,492評(píng)論 1 8
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項(xiàng)摸恍,請(qǐng)點(diǎn)擊這里進(jìn)行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,131評(píng)論 8 72
  • 最近幾日我的睡眠質(zhì)量嚴(yán)重下降,這讓我痛苦不堪赤屋,每每只能在凌晨東方露出魚肚白才能淺淺睡去立镶,早上八九點(diǎn)疲憊地睜開雙眼、...
    文墨婷香閱讀 488評(píng)論 1 2