上一篇【熱更新:使用Bugly集成的Tinker】主要是說(shuō)的配置英融,配置Tinker確實(shí)很麻煩盏檐,當(dāng)然好處也是很大的。不僅支持各種類驶悟,so胡野,資源的替換,體積也較小痕鳍,是一款很強(qiáng)大的熱修復(fù)工具硫豆。媽媽再也不用擔(dān)心我們被h5替代了!
都配置好了笼呆,肯定要實(shí)踐一下來(lái)能體會(huì)它到底有多強(qiáng)大熊响!
第一步:打基準(zhǔn)包
在tinker-support.gradle中配置基準(zhǔn)包的tinkerid
tinkerId最好是一個(gè)唯一標(biāo)識(shí),例如git版本號(hào)诗赌、versionName等等汗茄。 如果你要測(cè)試熱更新,你需要對(duì)基線版本進(jìn)行聯(lián)網(wǎng)上報(bào)铭若。
這里強(qiáng)調(diào)一下洪碳,基線版本配置一個(gè)唯一的tinkerId递览,而這個(gè)基線版本能夠應(yīng)用補(bǔ)丁的前提是集成過(guò)熱更新SDK,并啟動(dòng)上報(bào)過(guò)聯(lián)網(wǎng)瞳腌,這樣我們后臺(tái)會(huì)將這個(gè)tinkerId對(duì)應(yīng)到一個(gè)目標(biāo)版本绞铃,例如tinkerId = "bugly_1.0.0" 對(duì)應(yīng)了一個(gè)目標(biāo)版本是1.0.0,基于這個(gè)版本打的補(bǔ)丁包就能匹配到目標(biāo)版本嫂侍。
執(zhí)行assembleRelease編譯生成基準(zhǔn)包,官方文檔是這么說(shuō)的流椒,可我真不會(huì)打這個(gè)assembleRelease丰嘉,平時(shí)要么直接運(yùn)行,要么直接就打包!
這里遇到一個(gè)坑稿存,就是直接運(yùn)行是運(yùn)行不起的糠雨,報(bào)錯(cuò)辣恋!到處找尋答案潘酗,最后是一個(gè)大神說(shuō)是因?yàn)楹蚷nstant run不兼容,需要關(guān)閉揪阿!
最后在群里面問(wèn)道了執(zhí)行的方法疗我,原來(lái)在最右邊的Gradle里面
用了快一年的AS,還不知道如何打基準(zhǔn)包,慚愧澳衔妗吴裤!
查了很多資料才知道沒(méi)有什么基準(zhǔn)包,只是這種打包的方式和手動(dòng)打包有所區(qū)別溺健。其實(shí)也就是打一個(gè)安裝包而已麦牺!
在這里我不得不說(shuō)我又遇到了一個(gè)問(wèn)題,就是打出來(lái)的包和官方的不一樣鞭缭。我不僅僅說(shuō)的是名字不一樣剖膳,而是我打出來(lái)的包根本沒(méi)有簽名!是下面這樣的:
于是我又開(kāi)始查我的包為什么不一樣岭辣,發(fā)現(xiàn)根本找不到答案吱晒。其實(shí)從名字就可以看出,其實(shí)是我打的包沒(méi)有簽名沦童!于是就去查如何用assembleRelease簽名打包仑濒!又查了一天才知道了原來(lái)有手動(dòng)打包和自動(dòng)打包的區(qū)別!
手動(dòng)打包:就是通過(guò)AndroidStudio工具欄的Build->Generate signed APK...來(lái)打包
自動(dòng)打包:通過(guò)在Gradle中配置signingConfigs來(lái)偷遗,然后點(diǎn)擊右邊當(dāng)前項(xiàng)目下的assembleRelease命令來(lái)打包
自動(dòng)簽名參考 :AndroidStudio配置gradle墩瞳,讓App自動(dòng)簽名
最開(kāi)始我還把沒(méi)有簽名的unsign.apk用360工具來(lái)簽名打包,累死個(gè)人氏豌,現(xiàn)在想想當(dāng)初自己是有多蠢按V颉!
注意:這個(gè)打好的基準(zhǔn)包需要安裝到手機(jī)上面箩溃,聯(lián)網(wǎng)的情況下打開(kāi)以下為后面的補(bǔ)丁包做準(zhǔn)備瞭吃,也就是官方說(shuō)的聯(lián)網(wǎng)上報(bào)。后臺(tái)logcat可以看日志輸出涣旨,官方圖如下:
第二步:打補(bǔ)丁包
打補(bǔ)丁包之前要修改你項(xiàng)目的東西歪架,這樣才能有所區(qū)分,這個(gè)我就不說(shuō)了霹陡!關(guān)鍵是要修改tinker-support.gradle里面的配置和蚪,appName的名字一定要是你打的基準(zhǔn)包的目錄的名字,不然會(huì)報(bào)找不到oldapk的錯(cuò)誤烹棉,同時(shí)還要修改tinkerId字段攒霹!
項(xiàng)目和這個(gè)文件修改只有,點(diǎn)擊buildTinkerPatchRelease就可以了浆洗,之前我沒(méi)有配置自動(dòng)簽名催束,打這個(gè)補(bǔ)丁包都打不了!
生成的補(bǔ)丁包在build/outputs/patch/release目錄下(官方在build/outputs/patch下伏社,不知道我自己為什么多個(gè)了release):
第三步:上傳下發(fā)補(bǔ)丁
就是進(jìn)入Bugly官方抠刺,進(jìn)入你當(dāng)前項(xiàng)目,在應(yīng)用升級(jí)里面可以找到熱更新摘昌,上傳patch_signed_7zip.apk這個(gè)文件速妖,然后立即下發(fā)!
第四步:測(cè)試
測(cè)試的時(shí)候聪黎,一定要把這個(gè)應(yīng)用徹底關(guān)閉后再啟動(dòng)罕容,修改才會(huì)生效!
總結(jié):
寫(xiě)這個(gè)整整用了我一周的時(shí)間稿饰,因?yàn)樵谄渲杏龅搅颂鄤e人和官方?jīng)]有問(wèn)題(官方不會(huì)教你自動(dòng)簽名的配置锦秒,因?yàn)槟遣皇撬氖拢惨驗(yàn)楹芏嗯渲枚伎床幻靼紫孀荩粫?huì)依葫蘆畫(huà)瓢脂崔,所以進(jìn)度很慢,同時(shí)也學(xué)到了很多梧喷。特別是經(jīng)歷重重困難后終于測(cè)試成功砌左,代碼展現(xiàn)后的喜悅只能用以淚洗面,哭著笑了來(lái)形容铺敌!在此記錄下來(lái)汇歹,獻(xiàn)給奮斗在代碼前線的同僚們,堅(jiān)強(qiáng)不息偿凭,代碼不止产弹!
兩年之后再探Tinker,發(fā)現(xiàn)他們現(xiàn)在出了TinkerPatch平臺(tái),感覺(jué)比在Bugly中使用熱更新更簡(jiǎn)單了:
Tinker再探之TinkerPatch 平臺(tái)