Android使用Walle實現(xiàn)多渠道打包功能的實現(xiàn)示例
介紹
Walle(瓦力)是Android Signature V2 Scheme簽名下的新一代渠道包打包神器。
瓦力通過在Apk中的APK Signature Block區(qū)塊添加自定義的渠道信息來生成渠道包,從而提高了渠道包生成效率,可以作為單機工具來使用,也可以部署在HTTP服務(wù)器上來實時處理渠道包Apk的升級網(wǎng)絡(luò)請求。
使用
使用Walle生成多渠道的速度是很快的,原來的項目打一個包就需要兩分鐘多,每次發(fā)布打7個包需要十幾分鐘。用了Walle后,7個包只要兩分鐘左右就完事了。那叫一個快…
添加依賴&配置渠道,在項目的build.gradle文件中添加依賴:
buildscript {
dependencies {
classpath 'com.meituan.android.walle:plugin:1.1.3'
}
}
在當(dāng)前app的build.gradle 文件中添加依賴,以及配置插件
apply plugin: 'walle'
...
dependencies {
...
compile 'com.meituan.android.walle:library:1.1.3'
}
walle {
// 指定渠道包的輸出路徑
apkOutputFolder = new File("${project.buildDir}/outputs/channels");
// 定制渠道包的APK的文件名稱
apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk';
// 渠道配置文件
channelFile = new File("${project.getProjectDir()}/channel")
}
對應(yīng)的屬性:
apkOutputFolder:指定渠道包的輸出路徑, 默認(rèn)值為:
new File("${project.buildDir}/outputs/apk")
這里指定為build/outputs/apk。
apkFileNameFormat:定制渠道包的APK的文件名稱, 默認(rèn)值為:
'appName−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:包含渠道配置信息的文件路徑
channelFile:包含渠道配置信息的文件路徑。
在app目錄下創(chuàng)建channel文件,用于配置渠道信息(文件類型:Text)

下面是我的配置表
Qh360 #360 Yyb #應(yīng)用寶 Wdj #豌豆莢 Lenovo #聯(lián)想 Xiaomi #小米 Huawei #華為 Meizhu #魅族
獲取渠道信息,通過以下代碼,可以取渠道信息:
String channel = WalleChannelReader.getChannel(this.getApplicationContext());
生成渠道包,到這里,基本的配置都已完成。接下來可以直接打包了。
在Terminal中輸入對應(yīng)的指令,即可完成打包??吹紹UILD SUCCESSFUL后說明已經(jīng)完成打包了。

所有渠道
./gradlew clean assembleReleaseChannels
渠道包的生成目錄默認(rèn)存放在 build/outputs/apk/,也可以通過Walle閉包中的apkOutputFolder參數(shù)來指定輸出目錄。
指定渠道
生成單個渠道包(huawei渠道):
./gradlew clean assembleReleaseChannels -PchannelList=huawei
生成多個渠道包(huawei、xiaomi渠道):
./gradlew clean assembleReleaseChannels -PchannelList=huawei,xiaomi
結(jié)果,運行
./gradlew clean assembleReleaseChannels
可以在build/outputs/channels看到對應(yīng)的渠道包。

以上就是Android使用Walle實現(xiàn)多渠道打包功能的實現(xiàn)示例的詳細內(nèi)容,更多關(guān)于Android實現(xiàn)多渠道打包功能的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android彈窗ListPopupWindow的簡單應(yīng)用詳解
這篇文章主要為大家詳細介紹了Android彈窗ListPopupWindow的簡單應(yīng)用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
Android EditText實現(xiàn)輸入金額類型詳解
EditText是Android中一個非常實用的控件,有很多InputType,可以來達到不同的輸入效果,下面這篇文章主要給大家介紹了關(guān)于Android EditText實現(xiàn)輸入金額類型的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09
Mac OS下為Android Studio編譯FFmpeg解碼庫的詳細教程
這篇文章主要介紹了Mac OS下為Android Studio編譯FFmpeg解碼庫的詳細教程,包括NDK的配置和Android Studio的配置兩個部分的內(nèi)容,需要的朋友可以參考下2016-01-01
Android實現(xiàn)彈出輸入法時頂部固定中間部分上移的效果
本文主要介紹了Android實現(xiàn)彈出輸入法時頂部固定中間部分上移的效果的方法。具有很好的參考價值,下面跟著小編一起來看下吧2017-03-03
一文詳解Jetpack?Android新一代導(dǎo)航管理Navigation
這篇文章主要為大家介紹了Jetpack?Android新一代導(dǎo)航管理Navigation詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03
Android ContentProvider獲取手機聯(lián)系人實例
這篇文章主要介紹了Android ContentProvider獲取手機聯(lián)系人實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
Android學(xué)習(xí)之Broadcast的簡單使用
這篇文章主要為大家詳細介紹了Android學(xué)習(xí)之Broadcast的簡單使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08

