Android使用Walle實現多渠道打包功能的實現示例

介紹

Walle(瓦力)是Android Signature V2 Scheme簽名下的新一代渠道包打包神器。

瓦力通過在Apk中的APK Signature Block區塊添加自定義的渠道信息來生成渠道包,從而提高瞭渠道包生成效率,可以作為單機工具來使用,也可以部署在HTTP服務器上來實時處理渠道包Apk的升級網絡請求。

使用

使用Walle生成多渠道的速度是很快的,原來的項目打一個包就需要兩分鐘多,每次發佈打7個包需要十幾分鐘。用瞭Walle後,7個包隻要兩分鐘左右就完事瞭。那叫一個快…

添加依賴&配置渠道,在項目的build.gradle文件中添加依賴:

buildscript {
    dependencies {
        classpath 'com.meituan.android.walle:plugin:1.1.3'
    }
}

在當前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")
}

對應的屬性:

apkOutputFolder:指定渠道包的輸出路徑, 默認值為:

new File("${project.buildDir}/outputs/apk")

這裡指定為build/outputs/apk。

apkFileNameFormat:定制渠道包的APK的文件名稱, 默認值為:

'appName−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:包含渠道配置信息的文件路徑

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

在app目錄下創建channel文件,用於配置渠道信息(文件類型:Text)

下面是我的配置表

   Qh360 #360
   Yyb #應用寶
   Wdj #豌豆莢
   Lenovo #聯想
   Xiaomi #小米
   Huawei #華為
   Meizhu #魅族

獲取渠道信息,通過以下代碼,可以取渠道信息:

String channel = WalleChannelReader.getChannel(this.getApplicationContext());

生成渠道包,到這裡,基本的配置都已完成。接下來可以直接打包瞭。

在Terminal中輸入對應的指令,即可完成打包。看到BUILD SUCCESSFUL後說明已經完成打包瞭。

所有渠道

./gradlew clean assembleReleaseChannels

渠道包的生成目錄默認存放在 build/outputs/apk/,也可以通過Walle閉包中的apkOutputFolder參數來指定輸出目錄。

指定渠道
生成單個渠道包(huawei渠道):

./gradlew clean assembleReleaseChannels -PchannelList=huawei

生成多個渠道包(huawei、xiaomi渠道):

./gradlew clean assembleReleaseChannels -PchannelList=huawei,xiaomi

結果,運行

./gradlew clean assembleReleaseChannels

可以在build/outputs/channels看到對應的渠道包。

以上就是Android使用Walle實現多渠道打包功能的實現示例的詳細內容,更多關於Android實現多渠道打包功能的資料請關註WalkonNet其它相關文章!