精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

VasDolly服務端打渠道包教程

開發 前端
addChannelByV2 方法的 apkFile 參數是母包文件,channel 參數是需要打包的渠道名稱,lowMemory 參數是 V2 簽名打渠道包提供的參數,默認為 false。該方法會直接將我們傳入的 apkFile 母包修改成 V2 簽名的渠道包。如此一來,我們就獲得了我們需要的渠道包了。

本文我將給大家介紹一個 apk 打包工具 VasDolly 的使用介紹、原理以及如何在服務端接入 VasDolly 進行服務端打渠道包操作。

使用介紹

圖片圖片

VasDolly 是一個快速多渠道打包工具,同時支持基于 V1 和 V2 簽名進行多渠道打包。插件本身會自動檢測 Apk 使用的簽名類別,并選擇合適的多渠道打包方式,對使用者來說完全透明。

項目地址:https://github.com/Tencent/VasDolly

項目構建方式:gradle

VasDolly 官方對于 VasDolly 的定位是安卓端多渠道打包工具,由安卓開發接入安卓項目中使用。VasDolly 官方還提供了 jar 包工具通過命令行方式進行打包操作。

在安卓項目中要使用 VasDolly,你需要先在你的項目中添加對 VasDolly 插件和 helper 類庫的依賴。具體步驟如下:

  • 在根工程的 build.gradle 中,添加對打包插件的依賴:
dependencies {
    classpath 'com.android.tools.build:gradle:7.0.3'classpath 'com.tencent.vasdolly:plugin:3.0.6'
}
  • 在主 App 工程的 build.gradle 中,添加對 VasDolly 插件的引用:
apply plugin: 'com.tencent.vasdolly'
  • 在主 App 工程的 build.gradle 中,添加讀取渠道信息的 helper 類庫依賴:
dependencies {
    api 'com.tencent.vasdolly:helper:3.0.6'
}
  • 配置渠道列表。你可以通過兩種方式配置渠道列表,一種是在 gradle.properties 文件中指定渠道文件名稱,該渠道文件必須位于根工程目錄下,一行一個渠道信息。例如:
channel_file=channel.txt

其中 channel.txt 文件內容如下:

yingyongbao
gamecenter
xiaomi
huawei
oppo
vivo

另一種方式是在 channel 或者 rebuildChannel 屬性中通過 channelFile 屬性指定渠道文件,一行一個渠道信息。例如:

channel {
    //指定渠道文件
    channelFile = file("/Users/leon/Downloads/testChannel.txt")
}
  • 通過 Gradle 生成多渠道包。你可以選擇直接編譯生成多渠道包,或者根據已有基礎包重新生成多渠道包。如果你選擇直接編譯生成多渠道包,你需要配置渠道文件、渠道包的輸出目錄和渠道包的命名規則。例如:
channel {
    //指定渠道文件
    channelFile = file("/Users/leon/Downloads/testChannel.txt")
    //多渠道包的輸出目錄,默認為new File (project.buildDir,"channel")
    outputDir = new File(project.buildDir,"xxx")
    //多渠道包的命名規則,默認為:$ {appName}-$ {versionName}-$ {versionCode}-$ {flavorName}-$ {buildType}-$ {buildTime}
    apkNameFormat ='$ {appName}-$ {versionName}-$ {versionCode}-$ {flavorName}-$ {buildType}'//快速模式:生成渠道包時不進行校驗(速度可以提升10倍以上,默認為false)
    fastMode = false//buildTime的時間格式,默認格式:yyyyMMdd-HHmmss
    buildTimeDateFormat = 'yyyyMMdd-HH:mm:ss'//低內存模式(僅針對V2簽名,默認為false):只把簽名塊、中央目錄和EOCD讀取到內存,不把最大頭的內容塊讀取到內存,在手機上合成APK時,可以使用該模式
    lowMemory = false
}

然后,通過 gradle channelDebug 或 gradle channelRelease 命令分別生成 Debug 和 Release 的多渠道包。如果你選擇根據已有基礎包重新生成多渠道包,你需要配置渠道文件、基礎包的路徑和渠道包的輸出目錄。例如:

rebuildChannel {
    //指定渠道文件
    channelFile = file("/Users/leon/Downloads/testReChannel.txt")
    // 已有APK文件地址(必填),如new File (project.rootDir, "/baseApk/app_base.apk"),文件名中的base將被替換為渠道名
    baseApk = new File (project.rootDir, "/baseApk/app_base.apk")
    //默認為new File (project.buildDir, "rebuildChannel")
    outputDir = new File(project.buildDir,"yyy")
    //快速模式:生成渠道包時不進行校驗(速度可以提升10倍以上,默認為false)
    fastMode = false//低內存模式(僅針對V2簽名,默認為false):只把簽名塊、中央目錄和EOCD讀取到內存,不把最大頭的內容塊讀取到內存,在手機上合成APK時,可以使用該模式
    lowMemory = false
}

然后,通過 gradle rebuildChannel 命令生成多渠道包。

原理

VasDolly 實現原理官方講解地址:https://github.com/Tencent/VasDolly/wiki/VasDolly%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86

VasDolly 的原理是利用 APK 文件的特殊結構,將渠道信息寫入到 APK 文件的空白區域,從而實現無損的多渠道打包。具體來說,VasDolly 根據 APK 文件使用的簽名類別,選擇不同的多渠道打包方式。

如果 APK 文件使用的是 V1 簽名,那么 VasDolly 會將渠道信息寫入到 APK 文件的 Zip Comment 區域。Zip Comment 是 Zip 文件格式中的一個字段,用于存儲一些注釋信息,通常不會被解壓縮工具或者系統解析。因此,將渠道信息寫入到 Zip Comment 區域,不會影響 APK 文件的完整性和安全性。同時,由于 Zip Comment 區域位于 APK 文件的末尾,所以寫入渠道信息的速度非??欤恍枰薷囊粋€字節的偏移量即可。

如果 APK 文件使用的是 V2 或者 V3 簽名,那么 VasDolly 會將渠道信息寫入到 APK Signing Block 區域。APK Signing Block 是 V2 或者 V3 簽名引入的一個新區域,用于存儲簽名相關的數據。每個數據都有一個 ID 來標識其類型,例如 0x7109871a 表示 V2 簽名數據。VasDolly 會使用一個自定義的 ID(0x71777777)來標識渠道信息,并將其寫入到 APK Signing Block 區域。由于這個區域不會被系統解析,所以不會影響 APK 文件的安全性。同時,由于這個區域位于中央目錄和 EOCD 之前,所以寫入渠道信息的速度也很快,只需要修改兩個字節的偏移量即可。

通過這種方式,VasDolly 可以實現在不重新簽名和對齊的情況下,快速生成多個渠道包。在應用運行時,可以通過 VasDolly 提供的 helper 類庫來讀取渠道信息,并進行相應的處理。

服務端接入 VasDolly 教程

安卓接入了 VasDolly 之后,就該我們服務端出手了,服務端如果能實現渠道打包的操作,運營每次上新渠道就不需要再找安卓進行新渠道打包,運營直接在后臺上傳母包,選定渠道后即可獲取對應的渠道包,可以節約大家的時間,避免耗費人力在渠道打包這一步。由此可見,服務端進行渠道打包操作還是有必要的。

意外發現

一開始我是想用官方提供的 jar 包工具,通過命令行調用的方式來實現服務端打渠道包的,官方提供的 readme 文檔如下,

圖片圖片

但是由于博主項目是使用容器環境部署,要是用命令行打包的話,需要引入 VasDolly jar 包并且掛載都容器中,感覺比較麻煩。就想能不能直接引入 VasDolly 依賴來實現打包操作。

于是我在 maven 中央倉庫搜索了 com.tencent.vasdolly 關鍵字后,有了如下發現,

圖片圖片

可以看到 VasDolly 雖然是一個 Gradle 項目,但是官方也提供了部分模塊的在 Maven 中的 pom 坐標。

查看 VasDolly 倉庫代碼,發現官方定義了 write 模塊,

圖片圖片

進入其中,發現了 readme 內容如下,

圖片圖片

Ok,到這里,我們發現其實官方提供了 pom 依賴接入,直接使用 ChannelWriter 即可實現渠道打包的操作。

具體教程

  • 在后端 maven 項目中引入 VasDolly 的 pom 依賴,當前最新依賴版本如下,
<dependency>
      <groupId>com.tencent.vasdolly</groupId>
      <artifactId>writer</artifactId>
      <version>3.0.6</version>
  </dependency>
  <dependency>
      <groupId>com.tencent.vasdolly</groupId>
      <artifactId>common</artifactId>
      <version>3.0.6</version>
  </dependency>
  <dependency>
      <groupId>com.tencent.vasdolly</groupId>
      <artifactId>reader</artifactId>
      <version>3.0.6</version>
  </dependency>
  • 然后我們就可以利用 ChannelWriter 類實現渠道打包操作,ChannelWriter 類提供的 V2 簽名打渠道包方法如下:
public static void addChannelByV2(File apkFile, String channel, boolean lowMemory) throws IOException, SignatureNotFoundException {
      addChannelByV2(apkFile, apkFile, channel, lowMemory);
  }

addChannelByV2 方法的 apkFile 參數是母包文件,channel 參數是需要打包的渠道名稱,lowMemory 參數是 V2 簽名打渠道包提供的參數,默認為 false。該方法會直接將我們傳入的 apkFile 母包修改成 V2 簽名的渠道包。如此一來,我們就獲得了我們需要的渠道包了。

  • 除了利用 ChannelWriter 類實現打渠道包操作,我們還可以利用 ChannelReader 類來實現讀取渠道包的渠道參數,ChannelReader 類提供的 V2 簽名渠道包參數讀取方法如下:
public static String getChannelByV2(File channelFile) {
      System.out.println("try to read channel info from apk : " + channelFile.getAbsolutePath());
      return IdValueReader.getStringValueById(channelFile, -2012129793);
  }

getChannelByV2 方法的 channelFile 參數就是打包后渠道包,該方法會返回渠道包中的渠道信息。

責任編輯:武曉燕 來源: waynblog
相關推薦

2016-03-18 09:04:42

swift服務端

2012-03-02 10:38:33

MySQL

2013-03-25 10:08:44

PHPWeb

2010-08-03 09:59:30

NFS服務

2016-11-03 09:59:38

kotlinjavaspring

2021-05-25 08:20:37

編程技能開發

2010-02-24 15:42:03

WCF服務端安全

2022-12-29 08:56:30

監控服務平臺

2010-03-19 18:17:17

Java Server

2009-08-21 15:22:56

端口偵聽

2010-03-18 18:09:36

Java Socket

2021-04-26 13:20:06

Vue服務端渲染前端

2009-08-21 16:14:52

服務端與客戶端通信

2011-09-09 09:44:23

WCF

2009-08-21 15:59:22

服務端與客戶端通信

2025-09-30 09:20:48

SpringAIMCP

2024-03-06 14:58:52

客戶端微服務架構

2009-08-21 15:36:41

服務端與客戶端

2009-08-21 15:54:40

服務端與客戶端

2010-03-18 17:47:07

Java 多客戶端通信
點贊
收藏

51CTO技術棧公眾號

黄色一级片在线看| 日韩av免费一区| 亚洲在线观看网站| 在线免费观看的av| 91丨九色porny丨蝌蚪| 国产精品久久久久影院日本 | 丰满人妻一区二区三区四区| 天天综合网91| 日韩精品一区二区视频| 孩娇小videos精品| 9999在线视频| 国产精品毛片大码女人| 国产欧美日韩一区| 国产精品视频一区二区三区,| 伊人影院久久| 俺去啦;欧美日韩| 成人性生活免费看| 亚洲狼人综合| 日本韩国欧美一区二区三区| www.在线观看av| 777电影在线观看| www.爱久久.com| 91在线高清视频| av片免费观看| 亚洲国产二区| 欧美成人亚洲成人| 久久精品色妇熟妇丰满人妻| 色婷婷av一区二区三区丝袜美腿| 欧美一区二区三区视频在线| 天天爽天天爽夜夜爽| 欧美成人久久久免费播放| 久久久久99精品| 久久国产精品成人免费观看的软件| 亚洲激情视频在线播放| 亚洲av无码久久精品色欲| 激情久久99| 在线免费观看视频一区| 欧美丰满熟妇bbbbbb百度| 日本无删减在线| 亚洲美女区一区| 伊人久久青草| 求av网址在线观看| 国产精品三级在线观看| 欧美三级电影在线播放| 天堂在线视频观看| 99精品视频免费在线观看| 国产精品一区视频网站| 亚洲精品成人电影| 懂色中文一区二区在线播放| 成人激情视频在线播放| 亚洲影院一区二区三区| 蜜臀av亚洲一区中文字幕| 国产精品久久久久99| 欧美一级做a爰片免费视频| 久久久久久亚洲精品杨幂换脸| 97视频在线免费观看| 国产69精品久久久久久久久久| 亚洲小说欧美另类婷婷| 久久乐国产精品| 日韩女优在线观看| 亚洲欧美日韩国产一区二区| 2019中文字幕在线| 午夜久久久久久久久久影院| 人人狠狠综合久久亚洲| 国产精品一区久久久| 亚洲无码精品在线播放| 国产乱码精品1区2区3区| 97人人澡人人爽| 日本黄色免费视频| 久久综合色8888| 日韩高清免费观看| 中文字幕久久综合| 伊人影院蕉久影院在线播放| 亚洲一区二区三区中文字幕在线| 九色自拍视频在线观看| 男人av在线播放| 色婷婷综合在线| www.久久久精品| 久久在线观看| 日韩精品黄色网| 国产99在线 | 亚洲| 久久精品亚洲人成影院| 欧美夫妻性生活视频| 在线能看的av| 久热成人在线视频| 成人av电影免费| 免费av在线电影| 综合激情成人伊人| 日本福利视频在线| 久久福利在线| 亚洲成年网站在线观看| 国产传媒国产传媒| 综合激情网站| 国产成人精品一区二区三区| 精品黑人一区二区三区在线观看| 9人人澡人人爽人人精品| 亚洲成人网上| 97天天综合网| 欧美日本在线播放| 2一3sex性hd| 久久久久久久久99精品大| 韩国欧美亚洲国产| 国产精品爽爽久久久久久| av男人天堂一区| 最新精品视频| 三上悠亚激情av一区二区三区| 欧美一区二区在线播放| 亚洲激情视频小说| 黄色亚洲免费| 91免费欧美精品| 久久精品蜜桃| 亚洲动漫第一页| 久久精品国产露脸对白| 久久av免费看| 97色在线观看| 国内精品久久久久久久久久 | 欧美日韩视频专区在线播放| 久久久久久久人妻无码中文字幕爆| av在线不卡免费观看| 日韩综合一区二区| 久久99精品国产99久久6尤物| 日本免费在线观看视频| 成人免费毛片高清视频| 99re99热| 成人精品动漫| 亚洲午夜色婷婷在线| 久久国产精品系列| 粉嫩欧美一区二区三区高清影视| 在线天堂一区av电影| av一区在线| 亚洲欧美日韩成人| 中文字幕激情小说| aaa欧美日韩| 国产精品又粗又长| 成人春色在线观看免费网站| 久久久国产精品免费| 四虎影院在线免费播放| 91视频xxxx| 婷婷五月综合缴情在线视频| 精品视频在线播放一区二区三区| 日韩专区中文字幕| 中文字幕一区二区人妻痴汉电车| 久久久精品免费免费| 日本一本二本在线观看| 亚洲精品推荐| 国产精品99蜜臀久久不卡二区| 亚洲av成人精品一区二区三区在线播放| 一区二区三区在线视频观看58 | 国产亚洲欧美久久久久| 国产精品亚洲专一区二区三区| 中文字幕在线亚洲精品| 日韩成人综合网站| 久久在线免费视频| 国产特级黄色片| 亚洲欧美中日韩| 日本成人xxx| 国产精品mm| 激情五月综合色婷婷一区二区 | 日韩在线不卡一区| 久久美女视频| 91在线精品视频| 青春草在线免费视频| 欧美精品一区视频| 秋霞精品一区二区三区| 国产欧美一区二区在线| 亚洲欧美在线精品| 亚洲一区欧美| 国产一区二区高清视频| 成人福利av| 亚洲精品456| 国产午夜精品久久久| 无码日韩精品一区二区| 中文字幕一区二区不卡 | yiren22亚洲综合| 精品国内自产拍在线观看| 999av视频| 天天综合网 天天综合色| 一区二区精品免费| 捆绑调教一区二区三区| 国产911在线观看| 欧洲vs亚洲vs国产| 国产日韩精品电影| 欧美xxxx视频| 国产亚洲精品一区二555| 国产又大又黄又爽| 天天综合网天天综合色| 黄大色黄女片18免费| 国产精品一品二品| 欧美精品色婷婷五月综合| 色琪琪久久se色| 国产伦精品一区二区三毛| 户外露出一区二区三区| 欧美超级免费视 在线| 十九岁完整版在线观看好看云免费| 欧美在线观看视频一区二区| 欧产日产国产v| 久久一二三国产| 成人高清在线观看视频| 毛片一区二区| 日本高清xxxx| 欧美手机在线| 国产在线精品一区二区中文 | 在线观看的日韩av| 亚洲午夜精品一区二区三区| 激情av综合| 91久久精品美女| 国产日韩另类视频一区| 久久久久五月天| 欧美私人网站| 亚洲欧美日韩一区二区在线| 亚洲av无码专区在线| 欧美在线制服丝袜| 久久99精品波多结衣一区| 亚洲免费观看高清| 精品人体无码一区二区三区| av在线综合网| 亚洲精品成人无码毛片| 国产自产v一区二区三区c| 性欧美极品xxxx欧美一区二区| 亚洲一级电影| 国产女教师bbwbbwbbw| 青青草91久久久久久久久| 欧美激情一区二区三区在线视频| 日本国产在线| 久久精品国产99国产精品| 日本www在线播放| 狠狠88综合久久久久综合网| 免费观看黄色的网站| 欧美日韩色图| 欧洲一区二区在线| 亚洲国产欧美日韩在线观看第一区| 亚洲已满18点击进入在线看片| 成人黄页网站视频| 国产精欧美一区二区三区| 亚洲黄色网址| 奇米四色中文综合久久| 九九精品调教| 欧美高清videos高潮hd| 在线网址91| 久久精品亚洲精品| 黄网站app在线观看| 中文字幕av一区中文字幕天堂 | 正在播放欧美视频| 国产午夜精品一区理论片| 亚洲欧美综合图区| 国产黄在线观看| 国产亚洲欧美日韩一区二区| 高清毛片在线看| 中文字幕日韩欧美在线| 1024免费在线视频| 中文字幕最新精品| 天堂资源在线中文| 爱福利视频一区| 国产原创视频在线观看| 欧美xxxx18国产| 蜜臀av在线播放| 97国产精品视频| 中文字幕21页在线看| 欧美最猛性xxxx| 久久xxx视频| 国产在线观看一区二区三区 | 国产一区二区高清不卡| 日韩欧美四区| 日韩欧美三级一区二区| 91日韩欧美| 99er在线视频| 午夜在线播放视频欧美| 妺妺窝人体色www在线观看| 日本亚洲最大的色成网站www| 亚洲免费999| 丁香天五香天堂综合| 午夜一区二区三区免费| 国产欧美精品一区二区色综合朱莉| 色婷婷粉嫩av| 亚洲一区二区三区激情| 国产精品乱子伦| 欧美日韩一区精品| 精品国产99久久久久久宅男i| 欧美精品一区二区三区蜜臀| 亚洲欧洲视频在线观看| 亚洲色图50p| 精品黄色免费中文电影在线播放| 久久天堂av综合合色| 日韩精品手机在线观看| 成人中文视频| 日本免费成人网| 久热综合在线亚洲精品| 亚洲天堂一区二区在线观看| caoporm超碰国产精品| 一级片视频免费看| 一区二区免费看| 手机av免费观看| 日韩精品中文字幕在线不卡尤物| 欧美91精品久久久久国产性生爱| 精品国产一区av| 亚洲夜夜综合| 国产成人精品综合| 午夜视频在线观看精品中文 | 秋霞网一区二区| 一区二区在线视频| 国产乱码在线| 国产日韩亚洲欧美| 欧美男人操女人视频| 亚洲精品国产精品国自产| 在线观看视频日韩| 婷婷激情综合五月天| 久久综合av免费| 国产高潮流白浆| 日本丶国产丶欧美色综合| 亚洲AV无码精品国产| 中文字幕九色91在线| 日本在线高清| 99超碰麻豆| 91精品国产麻豆国产在线观看| 91传媒久久久| 国产成人啪免费观看软件| 国产不卡在线观看视频| 欧美性极品xxxx做受| www夜片内射视频日韩精品成人| 一本色道久久综合狠狠躁篇怎么玩| 91九色在线播放| 3d动漫精品啪啪一区二区三区免费| 欧洲杯足球赛直播| 女人天堂av手机在线| 国产91丝袜在线播放0| 国产麻豆视频在线观看| 欧美在线999| 久草视频在线看| 国产91精品久久久久久久| 99精品国产一区二区三区2021 | 色的视频在线免费看| 57pao国产精品一区| 久久精品亚洲成在人线av网址| 日本在线视频www色| 韩国av一区二区三区四区| 日本精品久久久久中文| 欧美视频自拍偷拍| 国产污视频在线| 国产成人久久久精品一区| 日本妇女一区| 欧美韩国日本在线| 91一区二区在线| 日韩欧美国产亚洲| 亚洲国产成人久久综合一区| 国产网红女主播精品视频| 99久久精品无码一区二区毛片| 中出一区二区| 国内av免费观看| 一区二区免费看| 欧美 日韩 中文字幕| 97碰在线观看| 在线视频亚洲专区| 日本久久久久久久久久久久| 国产亲近乱来精品视频| 亚洲一区中文字幕永久在线| 日韩网站免费观看高清| 综合久久伊人| www.激情网| www.亚洲在线| 五月天激情国产综合婷婷婷| 亚洲人成网7777777国产| 另类中文字幕国产精品| 这里只有精品66| 国产呦萝稀缺另类资源| 久一视频在线观看| 亚洲精品一区二区三区不| 精品网站在线| 中文字幕免费在线不卡| 粉嫩嫩av羞羞动漫久久久| 91av在线免费视频| 国产亚洲精品激情久久| 国产va免费精品观看精品| 国产乱人伦精品一区二区三区| 东方aⅴ免费观看久久av| 草久久免费视频| 一道本无吗dⅴd在线播放一区| 性欧美video另类hd尤物| youjizz.com在线观看| 91免费观看国产| 在线观看视频二区| 欧美高清在线观看| 五月天亚洲色图| 久久久久久久高清| 五月天丁香久久| av电影在线观看| 国产精品v欧美精品v日韩| 久久久国产亚洲精品| 影音先锋男人资源在线观看| 亚洲精品在线免费播放| 肉色欧美久久久久久久免费看| 裸体大乳女做爰69| 91免费视频大全| 国产精品久久欧美久久一区| 国内精品久久久久影院 日本资源| 久久成人av| 中文字幕在线观看视频www| 91高清视频免费看| av蜜臀在线| 中文字幕久久综合| 久久久欧美精品sm网站|