高效地Android多渠道快速打包

2021-07-09 06:24:24 字數 2066 閱讀 2768

背景:

為了運營的需要,我們需要對投放到市場上的apk安裝包進行特定的標識,然後應用能將自身的渠道資訊上傳到運營後台,以方便運營部門對相應的渠道資料進行處理以及針對性的投放推廣工作。

目前android的應用市場有上千個,特別多,所以設計個合理的多渠道打包策略非常重要,能直接影響版本的上線效率。

目前的多渠道的打包的方式主要有以下三種。

方式:

一、 **編譯生成渠道包

原理:每次都會修改渠道資訊配置檔案(androidmanifest.xml),然後每個渠道包都經歷編譯、生成dex檔案、apkbuilder、簽名、zipalign等過程,結果就能輸出所需要的多渠道包。

過程:

1、讀取渠道列表;

2、遍歷渠道表,生成渠道包

2.1 修改配置檔案(androidmanifest.xml)對應的渠道號;

2.2 執行build.xml進行打包;

2.3 將渠道包輸出到知道的檔案下。

大致**如下:

"modify-channel"

>

......

"androidmanifest.xml"

match

="(android:name="umeng_channel"\s+android:value=")

(.*)(")"

replace=

"\1$\3"

encoding=

"utf-8"

byline=

"false"

/>

......

小結:這種方式比較簡單和常規,之前很多打多渠道包的方式就是這種,實現起來比較簡單,但缺點很明顯,就是當渠道市場多時,打更多的渠道包的話就非常的好時機,因為每個渠道包都需要經歷從編譯到簽名這個過程,非常的耗時,那有沒更高效的方式呢,讓我們看看第二種方式。

二、 反編譯後生成多渠道包

原理:當我們生成乙個apk檔案後(母包),對其進行反編譯,然後遍歷渠道列表,依次修改配置檔案的渠道資訊,然後每個包重新進入打包流程:編譯、壓縮、簽名等。

過程:

1、反編譯apk;

2、讀取渠道表資訊;

3、遍歷渠道表、修改配置檔案(androidmanifest.xml)渠道資訊;

4、重新進入打包流程:編譯、混淆、簽名、對其等。

5、不同的渠道包分別輸出到指定的檔案目錄下。

常規的apk檔案目錄是這樣的:

可以發現其比常規的目錄內容多了幾個空檔案,然後就開始猜測其用途。

meta-inf: 相當於資訊包,用來配置應用程式、擴充套件程式、類載入器、服務等mf檔案,關鍵一點就是,該檔案裡的內容是不參與簽名的!所以,就憑它不參與簽名這一點,我們就能做很多事情,包括這裡所說的打包就可以利用上這一點,從而加快多渠道打包的速度。

過程:

4)輸出渠道包。經過以上3步後就能輸出多渠道包,整個過程非常地快,然後你就可以採集所需的渠道包投放到應用市場就可以了。

總結:從以上三種打包方式比較來看,第三種方式是最快的。多渠道包,說到底其實就是給每個相同的安裝包貼上標籤而已。而到底往哪貼很重要,直接決定了打包效率。第三種方式的話就直接選擇meta-inf這個特殊的資料夾中注入所需要渠道號的標籤,所以效率非常高。(如果你發現了其他更快的多渠道打包方法,記得告訴我)

Android多渠道打包

度娘能搜到很多種多渠道打包方式,我這裡簡單說下我們目前正在使用的打包方法。首先背景情況 我們不同渠道,除了渠道號 vendorid 不一樣外,還有功能上的稍許不同,所以還有幾個開關控制專案。方法原理 專案 中在res raw 下增加config.dat檔案,裡面有渠道號,和功能開關 apk包,其實是...

packer ng多渠道快速打包

步驟一 1.在整個工程的build.gradle中新增依賴 dependencies 2.在module的build.gradle中配置 dependencies 可選項 在module的build.gradle中配置,具體看注釋 步驟二 1.在gradle.properties裡加入 market...

Android原始多渠道打包

原始多渠道打包就是個體力活,在較少渠道的時候可以使用,但是面對上千的渠道的時候,使用這種方式你會後悔當一名android開發工程師。它的原理是在應用 中設定渠道id,使用的時候將渠道id設定給資料分析介面,資料分析平台通過該渠道id分析之。其實後面多渠道方式的本質原理都是這樣的,但是具體擴充套件方式...