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'

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

并在當前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:指定渠道包的輸出路徑, 默認值為new File("${project.buildDir}/outputs/apk")

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

可使用以下變量:

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

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

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

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

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

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

???????????? versionCode - versionCode (內部版本號)

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

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

???????????? flavorName - 編譯構建 productFlavors 名

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

如何獲取渠道信息

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

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

如何生成渠道包

生成渠道包的方式是和assemble${variantName}Channels指令結合,渠道包的生成目錄默認存放在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的情況

而對應的渠道信息獲取方式如下:

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

獲取信息

顯示當前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

指定輸出文件,自定義名稱。 不指定時默認與原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

輸出目錄可指定,不指定時默認在原apk包同目錄下。

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

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

輸出目錄可指定,不指定時默認在原apk包同目錄下。

更多用法

獲取cli所有功能

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

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容