美團walle多渠道打包

前言

美團的walle打包方案是基于Android Signature V2 Schme 簽名下的新一代渠道包打包神器,他通過在ApkSignNature Block 區(qū)塊添加自定義的渠道信息來生成渠道包,從而提高了渠道包的生成效率。也就是說只需要編譯打包一次,然后每個渠道復(fù)制一次,再往里面添加渠道信息。這樣大大提高了打包的速率。
如果有想了此工具原理的同學(xué),可以參考 新一代開源Android渠道包生成工具Walle。

美團walle打包的方式

1.通過gradle進行集成(本文著重介紹)
2.通過命令行使用(命令行wiki

基于gradle 集成的方式

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

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

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

apply plugin: 'walle'

dependencies {
    compile 'com.meituan.android.walle:library:1.1.7'
}

配置插件

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")
channelFile:包含渠道配置信息的文件路徑。 
apkFileNameFormat:定制渠道包的APK的文件名稱, 默認值為'${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如下:
image.png

生成/獲取渠道信息

  • 獲取渠道包
String channel = WalleChannelReader.getChannel(this.getApplicationContext());
  • 生成渠道包
    生成渠道包的方式是和assemble${variantName}Channels指令結(jié)合,渠道包的生成目錄默認存放在 build/outputs/apk/,也可以通過walle閉包中的apkOutputFolder參數(shù)來指定輸出目錄
    用法示例:
    生成渠道包 ./gradlew clean assembleReleaseChannels
    支持 productFlavors ./gradlew clean assembleMeituanReleaseChannels
  • AS右側(cè)點開Gradle工具欄,如下圖所示,雙擊運行Task任務(wù)


    image.png

    生成的APK渠道包,可以根據(jù)Walle配置文件路徑查找


    image.png

配合友盟統(tǒng)計的使用

友盟統(tǒng)計之前的多渠道統(tǒng)計方式是在AndroidManifast.xml文件中配合Gradle腳本productFlavors實現(xiàn)的多渠道信息集成的。如果使用walle,productFlavors不存在了,就算沒有刪除通過原有的獲取渠道信息的方式獲取到的渠道信息也不對了,所以需要動態(tài)去獲取

  String channel = WalleChannelReader.getChannel(applicationContext);
  UMConfigure.init(mContext, Constants.UMENG_KEY, channel, UMConfigure.DEVICE_TYPE_PHONE, "");
參考文獻:Android Signature V2 Scheme簽名下的新一代渠道包打包神器
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容