Walle(瓦力)多渠道打包

項目地址

https://github.com/Meituan-Dianping/walle

Gradle插件方式

配置build.gradle

在位于項目的根目錄build.gradle文件中添加Walle Gradle插件的依賴瞎饲, 如下:

????????? buildscript {

? ? ? ? ? ? ? ?? dependencies {

???????????????? ? ? ? classpath'com.meituan.android.walle:plugin:1.0.3'

?????????? }}

并在當(dāng)前App的build.gradle文件中apply這個插件宰译,并添加上用于讀取渠道號的AAR

???????????? applyplugin:'walle'

???????????? dependencies {

?????????????????????? compile'com.meituan.android.walle:library:1.0.3'

????????????? }

配置插件

??????? walle {

???????????????? //指定渠道包的輸出路徑

??????????????? apkOutputFolder=newFile("${project.buildDir}/outputs/channels");

???????????????? //定制渠道包的APK的文件名稱

???????????????? apkFileNameFormat='${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk';

???????????????? //渠道配置文件

???????????????? channelFile=newFile("${project.getProjectDir()}/channel");

??????????? }

?配置項具體解釋:

apkOutputFolder:指定渠道包的輸出路徑惶傻, 默認(rèn)值為new File("${project.buildDir}/outputs/apk")

apkFileNameFormat:定制渠道包的APK的文件名稱, 默認(rèn)值為'${appName}-${buildType}-${channel}.apk'

可使用以下變量:

???????????? projectName - 項目名字

???????????? appName - App模塊名字

???????????? packageName - applicationId (App包名packageName)

???????????? buildType - buildType (release/debug等)

???????????? channel - channel名稱 (對應(yīng)渠道打包中的渠道名字)

???????????? versionName - versionName (顯示用的版本號)

???????????? versionCode - versionCode (內(nèi)部版本號)

???????????? buildTime - buildTime (編譯構(gòu)建日期時間)

???????????? fileSHA1 - fileSHA1 (最終APK文件的SHA1哈希值)

???????????? flavorName - 編譯構(gòu)建 productFlavors 名

???????????? channelFile:包含渠道配置信息的文件路徑判导。

如何獲取渠道信息

在需要渠道等信息時可以通過下面代碼進(jìn)行獲取

Stringchannel=WalleChannelReader.getChannel(this.getApplicationContext());

如何生成渠道包

生成渠道包的方式是和assemble${variantName}Channels指令結(jié)合,渠道包的生成目錄默認(rèn)存放在build/outputs/apk/,也可以通過walle閉包中的apkOutputFolder參數(shù)來指定輸出目錄

用法示例:

生成渠道包./gradlew clean assembleReleaseChannels

支持 productFlavors./gradlew clean assembleMeituanReleaseChannels

插入額外信息

channelFile只支持渠道寫入,如果想插入除渠道以外的其他信息,請在walle配置中使用configFile

walle {

// 渠道&額外信息配置文件秘遏,與channelFile互斥

configFile = new File("${project.getProjectDir()}/config.json")

}

configFile是包含渠道信息和額外信息的配置文件路徑。

配置文件采用json格式嘉竟,支持為每個channel單獨配置額外的寫入信息邦危。

注意:

此配置項與channelFile功能互斥,開發(fā)者在使用時選擇其一即可舍扰,兩者都存在時configFile優(yōu)先執(zhí)行倦蚪。

extraInfo 不要出現(xiàn)以channel為key的情況

而對應(yīng)的渠道信息獲取方式如下:

ChannelInfochannelInfo=WalleChannelReader.getChannelInfo(this.getApplicationContext());

?if(channelInfo!=null) {

? ? ?? Stringchannel=channelInfo.getChannel();MapextraInfo=channelInfo.getExtraInfo();

? }

//或者也可以直接根據(jù)key獲取

Stringvalue=WalleChannelReader.get(context,"buildtime");

臨時生成某渠道包

我們推薦使用channelFile/configFile配置來生成渠道包,但有時也可能有臨時生成渠道包需求边苹,這時可以使用:

生成單個渠道包:./gradlew clean assembleReleaseChannels -PchannelList=meituan

生成多個渠道包:./gradlew clean assembleReleaseChannels -PchannelList=meituan,dianping

生成渠道包&寫入額外信息:

./gradlew clean assembleReleaseChannels -PchannelList=meituan -PextraInfo=buildtime:20161212,hash:xxxxxxx

注意: 這里的extraInfo以key:value形式提供陵且,多個以,分隔。

使用臨時channelFile生成渠道包:./gradlew clean assembleReleaseChannels -PchannelFile=/Users/xx/Documents/channel

使用臨時configFile生成渠道包:./gradlew clean assembleReleaseChannels -PconfigFile=/Users/xx/Documents/config.json

使用上述-P參數(shù)后个束,本次打包channelFile/configFile配置將會失效慕购,其他配置仍然有效。-PchannelList,-PchannelFile,-PconfigFile三者不可同時使用茬底。

命令行工具使用方式

需要jar包沪悲,CheckAndroidV2Signature.jar 下載鏈接:https://github.com/bihe0832/AndroidGetAPKInfo/blob/master/CheckAndroidV2Signature.jar

下載walle-cli-all.jar文件:https://github.com/Meituan-Dianping/walle/blob/master/walle-cli/walle-cli-all.jar

獲取信息

顯示當(dāng)前apk中的渠道和額外信息:

java -jar walle-cli-all.jar show /Users/Meituan/app/build/outputs/apk/app.apk

寫入信息

寫入渠道

java -jar walle-cli-all.jar put -c meituan /Users/Meituan/Downloads/app.apk

寫入額外信息,不提供渠道時不寫入渠道

java -jar walle-cli-all.jar put -c meituan -e buildtime=20161212,hash=xxxxxxx /Users/xxx/Downloads/app.apk

指定輸出文件阱表,自定義名稱殿如。 不指定時默認(rèn)與原apk包同目錄贡珊。

java -jar walle-cli-all.jar put -c meituan /Users/Meituan/Downloads/app.apk /Users/xxx/Downloads/app-new-hahha.apk

批量寫入

命令行指定渠道列表

java -jar walle-cli-all.jar batch -c meituan,meituan2,meituan3 /Users/walle/app/build/outputs/apk/app.apk

指定渠道配置文件

java -jar walle-cli-all.jar batch -f /Users/Meituan/walle/app/channel? /Users/Meituan/walle/app/build/outputs/apk/app.apk

輸出目錄可指定,不指定時默認(rèn)在原apk包同目錄下涉馁。

指定渠道&額外信息配置文件

java -jar walle-cli-all.jar batch2 -f /Users/Meituan/walle/app/config.json? /Users/Meituan/walle/app/build/outputs/apk/app.apk

輸出目錄可指定门岔,不指定時默認(rèn)在原apk包同目錄下。

更多用法

獲取cli所有功能

java -jar walle-cli-all.jar -h

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烤送,一起剝皮案震驚了整個濱河市寒随,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌帮坚,老刑警劉巖妻往,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異叶沛,居然都是意外死亡蒲讯,警方通過查閱死者的電腦和手機(jī)忘朝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進(jìn)店門灰署,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人局嘁,你說我怎么就攤上這事溉箕。” “怎么了悦昵?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵肴茄,是天一觀的道長。 經(jīng)常有香客問我但指,道長寡痰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任棋凳,我火速辦了婚禮拦坠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘剩岳。我一直安慰自己贞滨,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布拍棕。 她就那樣靜靜地躺著晓铆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绰播。 梳的紋絲不亂的頭發(fā)上骄噪,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天,我揣著相機(jī)與錄音蠢箩,去河邊找鬼腰池。 笑死尾组,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的示弓。 我是一名探鬼主播讳侨,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奏属!你這毒婦竟也來了跨跨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤囱皿,失蹤者是張志新(化名)和其女友劉穎勇婴,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘱腥,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡耕渴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了齿兔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片橱脸。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖分苇,靈堂內(nèi)的尸體忽然破棺而出添诉,到底是詐尸還是另有隱情,我是刑警寧澤医寿,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布栏赴,位于F島的核電站,受9級特大地震影響靖秩,放射性物質(zhì)發(fā)生泄漏须眷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一沟突、第九天 我趴在偏房一處隱蔽的房頂上張望花颗。 院中可真熱鬧,春花似錦事扭、人聲如沸捎稚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽今野。三九已至,卻和暖如春罐农,著一層夾襖步出監(jiān)牢的瞬間条霜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工涵亏, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留宰睡,地道東北人蒲凶。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像拆内,于是被迫代替她去往敵國和親旋圆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,666評論 2 350

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

  • 多渠道兩種打包方式: 一.利用android studio的productFlavors去多渠道打包麸恍。速度慢灵巧,讓人...
    曾是個文物閱讀 3,519評論 0 0
  • 前言 在Android 7.0(Nougat)推出了新的應(yīng)用簽名方案APK Signature Scheme v2...
    葉林舟閱讀 2,695評論 0 2
  • 月光在心里生出藤蔓融欧, 然后開出歲月的花來敏弃, 讓時光就此擱淺。 眼睛里會撞出心跳噪馏, 再從指尖流露出粉紅色麦到。 我有一個...
    南溪有荷閱讀 334評論 4 15
  • 大魚:“聽說魚的記憶只有7秒∈判剑” 小魚:“你說啥隅要?我沒聽清蝴罪《茫” 大魚:“啊要门?什么虏肾?” 小魚:“什么什么?” 我是聽...
    小一一93閱讀 326評論 0 0
  • 我走了,闖蕩江湖去了炒瘟。 其實吹埠,我闖蕩江湖是被逼無奈。 我是楊家村人疮装,幾年以前的一個風(fēng)雪夜缘琅,一個道士在我家借住一宿,...
    閱過邊界閱讀 945評論 3 9