度娘能搜到很多種多渠道打包方式,
我這裡簡單說下我們目前正在使用的打包方法。
首先背景情況
我們不同渠道,除了渠道號(vendorid)不一樣外,還有功能上的稍許不同,所以還有幾個開關控制專案。
方法原理:
專案**中在res/raw/下增加config.dat檔案,裡面有渠道號,和功能開關
apk包,其實是個zip包,打包好的(未簽名)的apk,用命令aapt(android sdk裡面的)是可以進行更能檔案內容的, 然後再進行簽名和對起(zipaligin)
具體方法:首先
採用的在專案res/raw目錄下,增加個 config.dat檔案,檔案格式使用的是proterity格式(一行乙個條目,冒號分割key和value)
之所以在這個目錄,因為raw目錄下的檔案在打包apk時是不會被壓縮的。
vendorid:market_default
showlogo:true
mustlogin:false
簡單的讀取config檔案**如下
properties prop = new properties();
prop.load(new inputstreamreader(getresources().openrawresource(r.raw.config)));
string vendorid = prop.getproperty("vendorid");
string tmp=prop.getproperty("showlogo");
boolean showlogo = textutils.equals("true",tmp);
然後,編譯專案,生成未簽名的apk(我們用的jenkins編譯伺服器)
接著,即使最主要的步驟了
將配置正確的config.dat檔案,放到當前目錄的/res/raw/config.dat下
示例如下,更改了vendorid
vendorid:market_abc
showlogo:true
mustlogin:true
替換apk包裡面的config.dat檔案
用如下命令,替換(先刪,在新增)config.data
#aapt remove -v cc.apk "res/raw/config.dat"
#aapt add -v cc.apk "res/raw/config.dat"
注意 檔案的路徑要要用 res/raw/
最後,重新對更改後的apk進行簽名和對起
#jarsigner -verbose -storepass password -keystore key_file -signedjar cc_sign.apk cc.apk key_alias -digestalg sha1 -sigalg md5withrsa
#zipalign -f -v 4 cc_sign.apk cc_out.apk
基本過程就這樣,
那怎麼多渠道呢?自己寫個bat檔案,for迴圈,處理就行。
Android原始多渠道打包
原始多渠道打包就是個體力活,在較少渠道的時候可以使用,但是面對上千的渠道的時候,使用這種方式你會後悔當一名android開發工程師。它的原理是在應用 中設定渠道id,使用的時候將渠道id設定給資料分析介面,資料分析平台通過該渠道id分析之。其實後面多渠道方式的本質原理都是這樣的,但是具體擴充套件方式...
Gradle多渠道打包
廢話不多說,以友盟統計為例,在androidmanifest.xml裡面會有這麼一段 meta data android name umeng channel android value channel id 裡面的channel id就是渠道標示。我們的目標就是在編譯的時候這個值能夠自動變化。或者...
高效地Android多渠道快速打包
背景 為了運營的需要,我們需要對投放到市場上的apk安裝包進行特定的標識,然後應用能將自身的渠道資訊上傳到運營後台,以方便運營部門對相應的渠道資料進行處理以及針對性的投放推廣工作。目前android的應用市場有上千個,特別多,所以設計個合理的多渠道打包策略非常重要,能直接影響版本的上線效率。目前的多...