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

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

VasDolly服務端打渠道包教程

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

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

使用介紹

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

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

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

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

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

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

yingyongbaogamecenterxiaomihuaweioppovivo

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

原理

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

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

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

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

服務端接入 VasDolly 教程

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

意外發現

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

標簽:
  • 熱門焦點
  • K60至尊版剛預熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛如火如荼的宣傳了K60 Ultra的各種技術和硬件配置,作為競品的一加也坐不住了。一加中國區總裁李杰發布了兩條微博,表示在自家的一加Ace2上早就已經采用了和PixelWo
  • 十個可以手動編寫的 JavaScript 數組 API

    JavaScript 中有很多API,使用得當,會很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對它們進行一次小總結。現在開始吧。1.forEach()forEach()用于遍歷數組接收一參
  • 2023 年的 Node.js 生態系統

    隨著技術的不斷演進和創新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態系統,可以幫助開發人員更快地實現復雜的應用。本文就來看看 Node.js 最新的生
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規模如今超過580
  • 疑似小米14外觀設計圖曝光:后置相機模組變化不大

    下半年的大幕已經開啟,而誰將成為下半年手機圈的主角就成為了大家關注的焦點,其中被傳有望拿下新一代驍龍8 Gen3旗艦芯片的小米14系列更是備受大家矚
  • 華為和江淮汽車合作開發百萬元問界MPV?雙方回應來了

    8月1日消息,郭明錤今天在社交平臺發文稱,華為正在和江淮汽車合作,開發售價在100萬元的問界MPV,預計在2024年第2季度量產,銷量目標為上市首年交付5萬輛。
  • OPPO Reno10 Pro英雄聯盟定制禮盒公布:薩勒芬妮同款配色夢幻十足

    5月24日,OPPO推出了全新的OPPO Reno 10系列,包含OPPO Reno10、OPPO Reno10 Pro和OPPO Reno10 Pro+三款新機,全系標配了超光影長焦鏡頭,是迄今為止拍照
  • 滴滴違法違規被罰80.26億 共存在16項違法事實

    滴滴違法違規被罰80.26億 存在16項違法事實開始于2121年7月,歷經一年時間,網絡安全審查辦公室對“滴滴出行”網絡安全審查終于有了一個暫時的結束。據“網信
  • 北京:科技教育體驗基地開始登記

      北京“科技館之城”科技教育體驗基地登記和認證工作日前啟動。首批北京科技教育體驗基地擬于2023年全國科普日期間掛牌,后續還將開展常態化登記。  北京科技教育體驗基
Top 主站蜘蛛池模板: 临西县| 河北省| 海南省| 垦利县| 遂溪县| 上犹县| 樟树市| 鲁山县| 白山市| 锦屏县| 宜阳县| 金平| 佛冈县| 静海县| 江阴市| 北流市| 集安市| 通化市| 佛冈县| 千阳县| 衡水市| 青岛市| 犍为县| 西乡县| 沧州市| 抚远县| 河西区| 油尖旺区| 枝江市| 鄂州市| 横山县| 托克逊县| 镇赉县| 酒泉市| 余江县| 珲春市| 礼泉县| 莒南县| 太谷县| 滨州市| 邵东县|