最近將項目的gradle和gradle插件升級到最新锯蛀,tinker也升級到最新灭衷,然而發(fā)現(xiàn)tinker在部分手機(jī)上提示補(bǔ)丁修復(fù)成功,但是實(shí)際上并沒有修復(fù)成功的問題谬墙。下載官方的demo測試發(fā)現(xiàn)是好的今布,排查了半天经备,發(fā)現(xiàn)是項目中tinker設(shè)置了isProtectedApp = true
這個屬性導(dǎo)致的拭抬。
這個屬性表示是否開啟加固,默認(rèn)是false侵蒙,將該值改為false后打補(bǔ)丁就沒問題了造虎。
但是我們項目是需要加固的啊7坠搿算凿!
要加固的話這個值就得設(shè)置成true份蝴,不然加固后的包就無法修復(fù)。
那為什么設(shè)置為true后氓轰,補(bǔ)丁就不生效了呢婚夫?
原來是我安裝的包是未加固的,如果安裝的加固的包署鸡,就沒問題......
也就是案糙,如果你打開了isProtectedApp這個開關(guān),那么需要被修復(fù)的包靴庆,就得是加固后的时捌。(可是為什么有的手機(jī)未加固的包也能生效呢)
梳理一下加固包打補(bǔ)丁的過程
- 首先打基準(zhǔn)包,這個包要保留下來
- 將基準(zhǔn)包加固,加固后再重新簽名炉抒,打渠道包
- 發(fā)布步驟2生成的包
- 線上出現(xiàn)bug啦奢讨,需要補(bǔ)丁修復(fù)
- 找到步驟1的基準(zhǔn)包,注意這個包是未加固的焰薄,把這個基準(zhǔn)包當(dāng)作old.apk
6.修復(fù)bug拿诸,執(zhí)行打補(bǔ)丁命令,生成補(bǔ)丁 - 將補(bǔ)丁上傳的公司服務(wù)器進(jìn)行下發(fā)
ps:我用的是樂固加固