新一代Android渠道打包工具:1000個(gè)渠道包只需要5秒


???? 原文轉(zhuǎn)自極分享更多詳情及更新查看原文????


最新版本

v1.0.4 - 2016.01.19 - 完善獲取APK路徑的方法,增加MarketInfo

v1.0.3 - 2016.01.14 - 增加緩存界牡,新增ResUtils龙填,更有好的錯(cuò)誤提示

v1.0.2 - 2015.12.04 - 兼容productFlavors矛缨,完善異常處理

v1.0.1 - 2015.12.01 - 如果沒(méi)有讀取到渠道兼吓,默認(rèn)返回空字符串

v1.0.0 - 2015.11.30 - 增加Java和Python打包腳本,增加文檔

v0.9.9 - 2015.11.26 - 測(cè)試版發(fā)布卿捎,支持全新的極速打包方式

源碼:https://github.com/mcxiaoke/packer-ng-plugin

項(xiàng)目介紹

packer-ng-plugin 是下一代Android渠道打包工具Gradle插件配紫,支持極速打包,1000個(gè)渠道包只需要5秒鐘午阵,速度是 gradle-packer-plugin 的1000倍以上躺孝,可方便的用于CI系統(tǒng)集成,支持自定義輸出目錄和最終APK文件名底桂,依賴包:com.mcxiaoke.gradle:packer-ng:1.0.+ 簡(jiǎn)短名:packer植袍,可以在項(xiàng)目的 build.gradle 中指定使用,還提供了命令行獨(dú)立使用的Java和Python腳本籽懦。實(shí)現(xiàn)原理見(jiàn)本文末尾于个。

使用指南

Maven Central

.

.


代碼部分?

.

.

.

實(shí)現(xiàn)原理

PackerNg原理?

優(yōu)點(diǎn)

使用APK注釋字段保存渠道信息和MAGIC字節(jié),從文件末尾讀取渠道信息暮顺,速度快

實(shí)現(xiàn)為一個(gè)Gradle Plugin厅篓,支持定制輸出APK的文件名等信息,方便CI集成

提供Java版和Python的獨(dú)立命令行腳本捶码,不依賴Gradle插件羽氮,支持獨(dú)立使用

由于打包速度極快,單個(gè)包只需要5毫秒左右惫恼,可用于網(wǎng)站后臺(tái)動(dòng)態(tài)生成渠道包

缺點(diǎn)

沒(méi)有使用Android的productFlavors档押,無(wú)法利用flavors條件編譯的功能

文件格式

Android應(yīng)用使用的APK文件就是一個(gè)帶簽名信息的ZIP文件,根據(jù) ZIP文件格式規(guī)范祈纯,每個(gè)ZIP文件的最后都必須有一個(gè)叫Central Directory Record 的部分令宿,這個(gè)CDR的最后部分叫"end of central directory record",這一部分包含一些元數(shù)據(jù)腕窥,它的末尾是ZIP文件的注釋粒没。注釋包含Comment Length和File Comment兩個(gè)字段,前者表示注釋內(nèi)容的長(zhǎng)度油昂,后者是注釋的內(nèi)容革娄,正確修改這一部分不會(huì)對(duì)ZIP文件造成破壞,利用這個(gè)字段冕碟,我們可以添加一些自定義的數(shù)據(jù)拦惋,PackerNg項(xiàng)目就是在這里添加和讀取渠道信息。

細(xì)節(jié)處理

原理很簡(jiǎn)單安寺,就是將渠道信息存放在APK文件的注釋字段中厕妖,但是實(shí)現(xiàn)起來(lái)遇到不少坑,測(cè)試了好多次挑庶。

同類工具

gradle-packer-plugin - 舊版渠道打包工具言秸,完全使用Gradle系統(tǒng)實(shí)現(xiàn)软能,能利用Android提供的productFlavors系統(tǒng)的條件編譯功能,無(wú)任何兼容性問(wèn)題举畸,方便集成查排,但是由于每次都要重新打包,速度比較慢抄沮,不適合需要大量打包的情況跋核。(性能:200個(gè)渠道包需要一到兩小時(shí))

Meituan-MultiChannelTool - 使用美團(tuán)方案的實(shí)現(xiàn),在APK文件的META-INF目里增加渠道文件叛买,打包速度也非成按快,但讀取時(shí)需要遍歷APK文件的數(shù)據(jù)項(xiàng)率挣,比較慢刻伊,而且以后可能遇到兼容性問(wèn)題

MultiChannelPackageTool - 將渠道寫(xiě)入APK文件的注釋,這個(gè)項(xiàng)目沒(méi)有提供Gradle插件椒功,只有命令行工具捶箱,不方便CI集成,使用ZIP文件注釋的思路就是來(lái)自此項(xiàng)目


轉(zhuǎn)自極分享??? 閱讀原文


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末动漾,一起剝皮案震驚了整個(gè)濱河市讼呢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谦炬,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件节沦,死亡現(xiàn)場(chǎng)離奇詭異键思,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)甫贯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門吼鳞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人叫搁,你說(shuō)我怎么就攤上這事赔桌。” “怎么了渴逻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵疾党,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我惨奕,道長(zhǎng)雪位,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任梨撞,我火速辦了婚禮雹洗,結(jié)果婚禮上香罐,老公的妹妹穿的比我還像新娘。我一直安慰自己时肿,他們只是感情好庇茫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著螃成,像睡著了一般旦签。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锈颗,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天顷霹,我揣著相機(jī)與錄音,去河邊找鬼击吱。 笑死淋淀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的覆醇。 我是一名探鬼主播朵纷,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼永脓!你這毒婦竟也來(lái)了袍辞?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤常摧,失蹤者是張志新(化名)和其女友劉穎搅吁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體落午,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谎懦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溃斋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片界拦。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖梗劫,靈堂內(nèi)的尸體忽然破棺而出享甸,到底是詐尸還是另有隱情,我是刑警寧澤梳侨,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布蛉威,位于F島的核電站,受9級(jí)特大地震影響走哺,放射性物質(zhì)發(fā)生泄漏瓷翻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望齐帚。 院中可真熱鬧妒牙,春花似錦、人聲如沸对妄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)剪菱。三九已至摩瞎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間孝常,已是汗流浹背旗们。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留构灸,地道東北人上渴。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像喜颁,于是被迫代替她去往敵國(guó)和親稠氮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,163評(píng)論 25 707
  • 前面我們?cè)?jīng)講過(guò)兩種Android的渠道打包方式半开,包括其中的原理都有所涉及隔披。今天給大家講解的是packer-ng-...
    非著名程序員閱讀 1,669評(píng)論 3 23
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)寂拆,斷路器奢米,智...
    卡卡羅2017閱讀 134,659評(píng)論 18 139
  • 目錄一、Python打包及優(yōu)化(美團(tuán)多渠道打包)二纠永、Gradle打包三恃慧、其他打包方案:修改Zip文件的commen...
    守望君閱讀 5,694評(píng)論 4 17
  • @亞行之家 請(qǐng)對(duì)今天凌晨在清邁機(jī)場(chǎng)辦理登機(jī)手續(xù)時(shí)被無(wú)理刁難之事給予一個(gè)解釋!我與家人于2016.1.17由香港乘機(jī)...
    智者的石頭閱讀 342評(píng)論 0 0