1.配置基準包的tinkerId (注意這里的base版本必須聯(lián)網(wǎng)上報 才可以上傳補丁包)
設(shè)置你的基準版本號 最好是和app version對應(yīng)

2.執(zhí)行assembleRelease編譯生成基準包
在android studio的右邊選擇gradle找到我們接入熱更新的model進入build中選擇生成的基準包類型:這里可以是Release和Debug版本

3.這個會在build/outputs/bakApk路徑下生成每次編譯的基準包、混淆配置文件、資源Id文件,如下圖所示

這里面有的app-release.apk就是我們需要上線的基線版本,請注意保存線上發(fā)布版本的基準apk包、mapping文件、R.txt文件,如果線上版本有bug,就可以借助我們tinker-support插件進行補丁包的生成。
3.如果你沒有開啟混淆是不會有mapping.txt文件的,需要在Moudle的build.gradle文件中開啟混淆

怎樣生成簽名文件這里就不介紹了。
4.對基線版本的bug修復(fù)
上面生成了base包了,那就需要去生成patch包了。
基準包的代碼:

補丁包(patch)的代碼:

5.根據(jù)基線版本生成補丁包
這里需要注意的:基準包目錄必須是你上次生成的base包,注意這里是按照時間命名的,檢查能否正確,tinkerId 需要生成patch包必須使用 tinkerId="patch-base"版本號對應(yīng)"

6.執(zhí)行構(gòu)建補丁包的task

如果你要生成不同編譯環(huán)境的補丁包,只需要執(zhí)行
TinkerSupport插件生成的task,比如buildTinkerPatchRelease就能生成release編譯環(huán)境的補丁包。
6.生成的補丁包在build/outputs/patch目錄下,其中7zip.apk就是我們需要使用的補丁包:

打開補丁包可以看到里面會有一個YAPATCH.MF,這里面包含了我們是從base版本到patch版本:以及app的version信息

7.上傳補丁包到平臺

進入到對應(yīng)
appid的app中,選擇應(yīng)用升級,熱更新,發(fā)布新補丁。
發(fā)布patch版本,選擇補丁文件之后會自動從補丁包的YAPATCH.MF去尋找base版本以及app版本,注意這里的base版本必須聯(lián)網(wǎng)上報(必須在聯(lián)網(wǎng)的情況下啟動app),才可以上傳補丁成功。如果沒有

上傳了補丁包可以選擇下發(fā)的范圍:
- 開發(fā)設(shè)備:僅僅針對設(shè)置了開發(fā)設(shè)備。
- 利用代碼:
Bugly.setIsDevelopmentDevice(this, true);設(shè)置為開發(fā)者設(shè)備。 - 全量設(shè)備:針對所有的用戶。
- 自定義:可以設(shè)置下發(fā)范圍:隨機下發(fā)設(shè)置的版本數(shù)量,還可以設(shè)置
android版本范圍,僅僅在這個范圍內(nèi)才會下發(fā)并且生效。
下發(fā)補丁之后:

里面包括了激活的用戶數(shù)量以及下發(fā)的數(shù)量,在操作過程中我們可能對于上個補丁不太滿意,我們需要發(fā)布一個新的補丁,
bugly提供了2中操作。
停止下發(fā):點擊之后將不會在下發(fā)bugly補丁,但是之前已經(jīng)下載并且激活的不會刪除掉補丁。
撤回:點擊之后將停止下發(fā)補丁,并且之前已經(jīng)下載并且激活的用戶將會刪除掉補丁包,并且恢復(fù)到基準包的版本。
8.檢查patch包能否生效
基準包執(zhí)行效果圖:
基準包效果圖

修復(fù)之后的效果圖:

如果不能立即生效,需要吧app至于后臺一段時間才能生效
其他相關(guān)文章
http://yiweifen.com/html/news/WaiYu/74967.html
https://buglydevteam.github.io/2017/05/15/solution-of-multiple-channel-hotpatch/
https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix-demo/