国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當前位置:首頁 > 科技  > 軟件

VasDolly服務端打渠道包教程

來源: 責編: 時間:2023-08-09 23:03:00 417觀看
導讀本文我將給大家介紹一個 apk 打包工具 VasDolly 的使用介紹、原理以及如何在服務端接入 VasDolly 進行服務端打渠道包操作。使用介紹圖片VasDolly 是一個快速多渠道打包工具,同時支持基于 V1 和 V2 簽名進行多渠道打包

本文我將給大家介紹一個 apk 打包工具 VasDolly 的使用介紹、原理以及如何在服務端接入 VasDolly 進行服務端打渠道包操作。bso28資訊網——每日最新資訊28at.com

使用介紹

圖片圖片bso28資訊網——每日最新資訊28at.com

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

項目地址:https://github.com/Tencent/VasDollybso28資訊網——每日最新資訊28at.com

項目構建方式:gradlebso28資訊網——每日最新資訊28at.com

VasDolly 官方對于 VasDolly 的定位是安卓端多渠道打包工具,由安卓開發接入安卓項目中使用。VasDolly 官方還提供了 jar 包工具通過命令行方式進行打包操作。bso28資訊網——每日最新資訊28at.com

在安卓項目中要使用 VasDolly,你需要先在你的項目中添加對 VasDolly 插件和 helper 類庫的依賴。具體步驟如下:bso28資訊網——每日最新資訊28at.com

  • 在根工程的 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 文件內容如下:bso28資訊網——每日最新資訊28at.com

yingyongbaogamecenterxiaomihuaweioppovivo

另一種方式是在 channel 或者 rebuildChannel 屬性中通過 channelFile 屬性指定渠道文件,一行一個渠道信息。例如:bso28資訊網——每日最新資訊28at.com

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 的多渠道包。如果你選擇根據已有基礎包重新生成多渠道包,你需要配置渠道文件、基礎包的路徑和渠道包的輸出目錄。例如:bso28資訊網——每日最新資訊28at.com

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 命令生成多渠道包。bso28資訊網——每日最新資訊28at.com

原理

VasDolly 實現原理官方講解地址:https://github.com/Tencent/VasDolly/wiki/VasDolly%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86bso28資訊網——每日最新資訊28at.com

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

如果 APK 文件使用的是 V1 簽名,那么 VasDolly 會將渠道信息寫入到 APK 文件的 Zip Comment 區域。Zip Comment 是 Zip 文件格式中的一個字段,用于存儲一些注釋信息,通常不會被解壓縮工具或者系統解析。因此,將渠道信息寫入到 Zip Comment 區域,不會影響 APK 文件的完整性和安全性。同時,由于 Zip Comment 區域位于 APK 文件的末尾,所以寫入渠道信息的速度非常快,只需要修改一個字節的偏移量即可。bso28資訊網——每日最新資訊28at.com

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

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

服務端接入 VasDolly 教程

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

意外發現

一開始我是想用官方提供的 jar 包工具,通過命令行調用的方式來實現服務端打渠道包的,官方提供的 readme 文檔如下,bso28資訊網——每日最新資訊28at.com

圖片圖片bso28資訊網——每日最新資訊28at.com

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

于是我在 maven 中央倉庫搜索了 com.tencent.vasdolly 關鍵字后,有了如下發現,bso28資訊網——每日最新資訊28at.com

圖片圖片bso28資訊網——每日最新資訊28at.com

可以看到 VasDolly 雖然是一個 Gradle 項目,但是官方也提供了部分模塊的在 Maven 中的 pom 坐標。bso28資訊網——每日最新資訊28at.com

查看 VasDolly 倉庫代碼,發現官方定義了 write 模塊,bso28資訊網——每日最新資訊28at.com

圖片圖片bso28資訊網——每日最新資訊28at.com

進入其中,發現了 readme 內容如下,bso28資訊網——每日最新資訊28at.com

圖片圖片bso28資訊網——每日最新資訊28at.com

Ok,到這里,我們發現其實官方提供了 pom 依賴接入,直接使用 ChannelWriter 即可實現渠道打包的操作。bso28資訊網——每日最新資訊28at.com

具體教程

  • 在后端 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 簽名的渠道包。如此一來,我們就獲得了我們需要的渠道包了。bso28資訊網——每日最新資訊28at.com

  • 除了利用 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 參數就是打包后渠道包,該方法會返回渠道包中的渠道信息。bso28資訊網——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-5156-0.htmlVasDolly服務端打渠道包教程

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: SpringBoot3進階用法,你學會了嗎?

下一篇: 圖形編輯器開發:一些會用到的簡單幾何算法

標簽:
  • 熱門焦點
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
久久国内精品自在自线400部| 国产一区二区三区免费| 91视频在线观看| 日韩精品欧美成人高清一区二区| 国产视频一区在线播放| 欧美一区二区久久| 欧美精品1区2区| 久久狠狠久久综合桃花| 亚洲一区bb| 久久亚洲电影| 欧美亚洲图片小说| 欧美另类变人与禽xxxxx| 欧美色综合网站| 91精品国产综合久久香蕉麻豆| 欧美日韩精品一区二区三区蜜桃 | 在线观看中文字幕不卡| 欧美性感一区二区三区| 91精品国产全国免费观看| 欧美大肚乱孕交hd孕妇| 久久久久青草大香线综合精品| 久久久久久99久久久精品网站| 国产偷v国产偷v亚洲高清| 国产精品视频在线看| 一区二区三区中文字幕| 日韩制服丝袜先锋影音| 韩国精品在线观看| 99热在这里有精品免费| 亚洲无线一线二线三线区别av| 红桃视频亚洲| 久久综合久久久| 777亚洲妇女| 国产片一区二区| 洋洋成人永久网站入口| 麻豆成人av在线| 99久久婷婷国产综合精品| 亚洲久色影视| 在线观看视频欧美| 久久综合中文字幕| 亚洲一区日韩精品中文字幕| 极品瑜伽女神91| 欧美日本亚洲| 欧洲人成人精品| 国产亚洲欧洲一区高清在线观看| 亚洲精品精品亚洲| 国产一区二区三区免费观看| 国内精品亚洲| 欧美性xxxxx极品少妇| 国产欧美一区二区精品性色超碰| 亚洲一区视频在线观看视频| 国产成人高清在线| 亚洲视频1区| 日韩午夜激情视频| 洋洋av久久久久久久一区| 懂色一区二区三区免费观看| 亚洲精品激情| 欧美成人三级在线| 爽好久久久欧美精品| 91年精品国产| 欧美视频精品在线观看| 亚洲视频一二区| 国产suv精品一区二区三区| 亚洲一区二区精品在线观看| 精品国产欧美一区二区| 天涯成人国产亚洲精品一区av| 不卡一二三区首页| 在线观看三级视频欧美| 1024精品合集| av亚洲精华国产精华精华 | 正在播放一区二区| 亚洲午夜久久久久久久久电影网| 成人黄色软件下载| 色狠狠色噜噜噜综合网| 成人免费在线视频观看| 成人av在线播放网址| 色婷婷av一区二区三区之一色屋| 国产精品久久久久婷婷| 国产精品亚洲一区二区三区妖精| 国产精品区一区| 欧美激情一区在线| 成人国产免费视频| 欧美网站一区二区| 亚洲国产精品麻豆| 尤物精品在线| 亚洲国产成人私人影院tom| 国产99久久久国产精品免费看| 久久久福利视频| 一区二区在线观看视频在线观看| 欧美精品aa| 欧美精品一区二区三区蜜桃| 国产精品一区二区在线观看不卡 | 欧日韩精品视频| 午夜精品福利视频网站| 亚洲精品婷婷| 成人欧美一区二区三区视频网页| 国产精品a级| 日韩欧美视频在线| 国产高清不卡一区二区| 精品视频一区 二区 三区| 日日摸夜夜添夜夜添国产精品| 亚洲国产精品一区| 中文字幕中文在线不卡住| 欧美国产视频在线观看| 国产色综合一区| 色综合久久综合网| 日本一区二区三区免费乱视频| 99久久精品国产观看| 精品久久久久久综合日本欧美| 粉嫩aⅴ一区二区三区四区五区| 91精品国产综合久久久久久| 国产黄色成人av| 欧美高清视频一二三区 | 亚洲第一激情av| 91福利在线导航| 另类人妖一区二区av| 欧美老人xxxx18| 不卡的电视剧免费网站有什么| 久久久久久久久伊人| 亚洲午夜精品久久久久久app| 伊人开心综合网| 欧美中文字幕不卡| 高潮精品一区videoshd| 亚洲国产激情av| 欧美精品导航| 亚洲欧洲精品成人久久奇米网| 国产精品国产亚洲精品看不卡15| 国产精品视频在线看| 1000部精品久久久久久久久| 在线中文字幕不卡| 久久精品久久精品| 欧美撒尿777hd撒尿| 蓝色福利精品导航| 7777精品伊人久久久大香线蕉经典版下载| 美女视频黄久久| 欧美性xxxxxxxx| 一区二区三区中文字幕电影| 日本二三区不卡| 韩国成人福利片在线播放| 在线不卡中文字幕| 99视频一区二区三区| 中文字幕一区二区在线播放 | 亚洲日本欧美在线| 亚洲老妇xxxxxx| 国产精品久久久久久久久久妞妞 | 久久色中文字幕| 成人动漫精品一区二区| 综合激情成人伊人| 小嫩嫩精品导航| 麻豆成人免费电影| 欧美精品一区二区三区蜜桃视频| 一区二区三区福利| 日韩和的一区二区| 538prom精品视频线放| 久久精品首页| 日日摸夜夜添夜夜添精品视频 | 成人免费电影视频| 久久一留热品黄| 韩日成人av| 日韩精品福利网| 日韩一区二区视频在线观看| 免费高清在线一区| 最新日韩av在线| 欧美主播一区二区三区| 99精品久久免费看蜜臀剧情介绍| 亚洲色图20p| 欧美亚洲免费在线一区| 9久草视频在线视频精品| 亚洲美女屁股眼交3| 亚洲精品免费在线观看| 日韩午夜一区| 国产乱人伦偷精品视频免下载| 欧美国产欧美亚州国产日韩mv天天看完整 | 在线观看日韩国产| 老司机一区二区| 亚洲午夜久久久久| 日韩美女一区二区三区| 日韩五码在线| 国产成人一级电影| 蜜臀av一区二区在线免费观看| wwwwxxxxx欧美| 久久性色av| 午夜日韩激情| 97精品久久久午夜一区二区三区 | 欧美一区二区日韩| 在线影院国内精品| 好吊色欧美一区二区三区视频| 日本欧美韩国一区三区| 日本一区二区三区在线不卡| 中文国产一区| 亚洲午夜激情| yourporn久久国产精品| 五月激情丁香一区二区三区| 久久久99精品免费观看不卡| 日韩欧美国产wwwww| 老司机精品导航| 欧美一区1区三区3区公司| 蜜臀av在线播放一区二区三区| 678五月天丁香亚洲综合网| 精品视频一区三区九区| 99视频+国产日韩欧美| 99久久婷婷国产综合精品|