日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

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

VasDolly服務端打渠道包教程

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

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

使用介紹

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

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

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

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

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

在安卓項目中要使用 VasDolly,你需要先在你的項目中添加對 VasDolly 插件和 helper 類庫的依賴。具體步驟如下:3ky28資訊網——每日最新資訊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 文件內容如下:3ky28資訊網——每日最新資訊28at.com

yingyongbaogamecenterxiaomihuaweioppovivo

另一種方式是在 channel 或者 rebuildChannel 屬性中通過 channelFile 屬性指定渠道文件,一行一個渠道信息。例如:3ky28資訊網——每日最新資訊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 的多渠道包。如果你選擇根據已有基礎包重新生成多渠道包,你需要配置渠道文件、基礎包的路徑和渠道包的輸出目錄。例如:3ky28資訊網——每日最新資訊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 命令生成多渠道包。3ky28資訊網——每日最新資訊28at.com

原理

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

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

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

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

服務端接入 VasDolly 教程

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

意外發現

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

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

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

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

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

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

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

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

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

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

Ok,到這里,我們發現其實官方提供了 pom 依賴接入,直接使用 ChannelWriter 即可實現渠道打包的操作。3ky28資訊網——每日最新資訊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 簽名的渠道包。如此一來,我們就獲得了我們需要的渠道包了。3ky28資訊網——每日最新資訊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 參數就是打包后渠道包,該方法會返回渠道包中的渠道信息。3ky28資訊網——每日最新資訊28at.com

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

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

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

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

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美福利影院| 亚洲欧美三级在线| 影音先锋国产精品| 亚洲大胆av| 日韩网站免费观看| 亚洲一区观看| 久久久精品国产免大香伊| 美女日韩在线中文字幕| 麻豆精品一区二区综合av | 欧美日韩国产综合久久| 国产精品狠色婷| 国产尤物精品| 亚洲免费观看高清完整版在线观看熊 | 亚洲国产精品va在线看黑人动漫| 亚洲精品中文字| 性久久久久久久久| 嫩草影视亚洲| 国产精品久久久久久久久免费桃花| 国产欧美丝祙| 亚洲精品一区二区三区樱花| 性刺激综合网| 欧美片第一页| 狠狠入ady亚洲精品经典电影| 一个人看的www久久| 久久天天躁狠狠躁夜夜av| 欧美日韩国产一中文字不卡 | 伊人精品久久久久7777| 制服丝袜激情欧洲亚洲| 久久野战av| 国产精品主播| 日韩一级免费| 老牛嫩草一区二区三区日本| 国产精品a级| 亚洲国产日韩一级| 欧美专区第一页| 国产欧美欧洲在线观看| 91久久国产综合久久91精品网站| 午夜精品久久久久久久久久久久| 免费精品视频| 国产色爱av资源综合区| 宅男精品导航| 欧美国产日韩精品免费观看| 国产一区再线| 亚洲一区日韩| 欧美区在线观看| 亚洲电影自拍| 久久精品亚洲一区| 国产乱肥老妇国产一区二| 一本大道久久a久久综合婷婷| 美女尤物久久精品| 韩国一区二区三区在线观看 | 欧美在线播放视频| 欧美性猛交xxxx免费看久久久 | 日韩亚洲国产欧美| 久久综合久久综合这里只有精品| 国产美女精品| 亚洲男人第一网站| 欧美午夜电影在线观看| 日韩手机在线导航| 欧美成人中文| 亚洲成色最大综合在线| 久久人人超碰| 国内一区二区三区在线视频| 欧美一区二区黄| 国产精品欧美经典| 亚洲午夜国产一区99re久久 | 国产精品永久免费视频| 亚洲性图久久| 国产精品www网站| 国产精品99久久久久久人| 欧美日韩国产美| 亚洲免费观看高清完整版在线观看| 欧美 日韩 国产 一区| 在线精品国精品国产尤物884a| 久久久亚洲欧洲日产国码αv| 国产亚洲精品美女| 欧美一区二区三区播放老司机 | 欧美午夜电影在线观看| 一区二区三区久久网| 欧美日韩一区二区三区在线视频 | 欧美日本中文字幕| 亚洲美女精品一区| 欧美精品18+| 99精品视频免费观看| 欧美精品一区在线| 亚洲美女黄色片| 欧美日韩国产综合一区二区| 亚洲美女一区| 欧美日韩在线免费| 亚洲影院在线观看| 国产精品日韩一区二区三区| 午夜精品www| 国产亚洲精品bv在线观看| 久久久久国产精品www| 极品少妇一区二区三区| 毛片一区二区| 亚洲精品影视在线观看| 欧美日韩成人综合在线一区二区 | 国产一区二区三区四区在线观看| 久久精品一区二区国产| **性色生活片久久毛片| 欧美激情区在线播放| 一区二区三区视频在线| 国产精品一区二区你懂得| 久久久久国产精品一区| 亚洲国产一区在线观看| 欧美日韩无遮挡| 新片速递亚洲合集欧美合集| 狠久久av成人天堂| 欧美风情在线观看| 亚洲视频你懂的| 国产欧美 在线欧美| 久久综合色综合88| 艳妇臀荡乳欲伦亚洲一区| 国产精品捆绑调教| 久久久久九九视频| 亚洲精选中文字幕| 国产精品一区二区三区观看| 久久久久免费观看| 亚洲精品综合精品自拍| 国产精品欧美在线| 久久久久在线观看| 9i看片成人免费高清| 国产农村妇女毛片精品久久麻豆 | 欧美日韩一级黄| 欧美一区二区视频在线观看2020| 亚洲大片精品永久免费| 欧美日韩一二三区| 久久国产精品毛片| 欧美日韩精品一本二本三本| 亚洲图片激情小说| 极品裸体白嫩激情啪啪国产精品| 欧美人与性动交cc0o| 校园春色综合网| 亚洲精品美女在线观看播放| 国产精品亚洲精品| 欧美寡妇偷汉性猛交| 午夜精品久久久久久久男人的天堂 | 在线观看欧美日韩| 欧美色区777第一页| 久久美女性网| 一本一本久久a久久精品综合麻豆| 国内揄拍国内精品久久| 欧美日韩在线电影| 久久久久综合网| 亚洲素人在线| 亚洲电影在线播放| 国产欧美午夜| 欧美视频精品在线观看| 看欧美日韩国产| 亚洲欧美综合另类中字| 亚洲精品国产欧美| 韩国女主播一区二区三区| 国产精品久久| 午夜视频久久久久久| 最新成人av在线| 国产日韩一区二区三区| 欧美日韩国产一区二区三区| 久久午夜精品| 性欧美xxxx视频在线观看| 亚洲乱码国产乱码精品精98午夜| 国内不卡一区二区三区| 国产精品久久福利| 欧美精品午夜| 美女日韩欧美| 久久精品91久久久久久再现| 一区二区三区偷拍| 91久久黄色| 尤物精品在线| 国产一区二区三区奇米久涩 | 99riav国产精品| 亚洲成人影音| 亚洲国产日韩在线| 狠狠色狠狠色综合人人| 国产精品视频| 欧美视频中文一区二区三区在线观看| 免费av成人在线| 久久久久九九九九| 欧美专区一区二区三区| 午夜精品成人在线| 亚洲私人影吧| 在线视频日本亚洲性| 日韩视频一区| 亚洲人成在线影院| 亚洲高清网站| 亚洲第一在线| 激情欧美一区二区三区在线观看 | 亚洲特黄一级片| 一本色道久久综合狠狠躁的推荐| 亚洲人屁股眼子交8| 亚洲国产欧美一区二区三区同亚洲| 精品电影在线观看| 国产一区二区三区在线观看免费视频| 国产精品久久久久久久久婷婷| 欧美色视频日本高清在线观看| 欧美日韩成人在线视频| 欧美精品一区二区三区在线播放 | 亚洲国产视频一区| 亚洲国产日韩欧美在线动漫| 在线欧美小视频| 亚洲国产国产亚洲一二三| 亚洲东热激情| 亚洲黄一区二区| 亚洲精品视频一区|