熱修復(fù)學(xué)習(xí)(2):TinkerSDK

Tinker是微信官方的Android熱補(bǔ)丁解決方案盾戴。使用Tinker熱修復(fù)比Sophix略麻煩油吭,分2鐘情況:
1 接入TinkerSDK勾扭,代碼量會(huì)少一些,但是需要去Tinker Platform創(chuàng)建自己的應(yīng)用要尔,補(bǔ)丁文件會(huì)傳入第三方平臺(tái)舍杜,有費(fèi)用標(biāo)準(zhǔn)新娜,而且是間隔時(shí)間去平臺(tái)查詢補(bǔ)丁,更新有延時(shí)既绩。
2 直接使用Tinker,代碼量多概龄,補(bǔ)丁文件保留在自己的服務(wù)器,每次有更新時(shí)能即時(shí)加載饲握。

先介紹接入TInkerSDK的方式

1 在項(xiàng)目的build.gradle文件中加入

buildscript { repositories { jcenter() } 
dependencies { // TinkerPatch 插件 classpath "com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:1.2.2" } }

2 在app的gradle中添加依賴

dependencies {
    // 若使用annotation需要單獨(dú)引用,對(duì)于tinker的其他庫都無需再引用
    provided("com.tinkerpatch.tinker:tinker-android-anno:1.9.2")
    compile("com.tinkerpatch.sdk:tinkerpatch-android-sdk:1.2.2")
}

3 在app目錄下私杜,創(chuàng)建tinkerpatch.gradle 這是tinker的一些配置,可以去SDKdemo里賦值一份救欧。

image

然后在app的build.gradle中引入

apply from: 'tinkerpatch.gradle'

介紹一些tinkerpatch.gradle中我們會(huì)用到幾個(gè)參數(shù)
baseInfo:基包文件夾名(打補(bǔ)丁包的時(shí)候衰粹,需要修改,這個(gè)會(huì)在后面打補(bǔ)丁再介紹一次)
appKey:進(jìn)入官網(wǎng)注冊(cè)一個(gè)賬號(hào)笆怠,新增APP铝耻,得到對(duì)應(yīng)的appKey。
appVision:這個(gè)一定要保持app版本跟平臺(tái)上編寫的版本一致

圖片.png

4 在application類中初始化Tinker
注意tinkerpatch.gradle中reflectApplication 這個(gè)參數(shù)

reflectApplication = true 的情況
public class SampleApplication extends Application {

    ...

    @Override
    public void onCreate() {
        super.onCreate();
        // 我們可以從這里獲得Tinker加載過程的信息
        tinkerApplicationLike = TinkerPatchApplicationLike.getTinkerPatchApplicationLike();

        // 初始化TinkerPatch SDK, 更多配置可參照API章節(jié)中的,初始化SDK
        TinkerPatch.init(tinkerApplicationLike)
            .reflectPatchLibrary()
            .setPatchRollbackOnScreenOff(true)
            .setPatchRestartOnSrceenOff(true)
            .setFetchPatchIntervalByHours(3);

        // 每隔3個(gè)小時(shí)(通過setFetchPatchIntervalByHours設(shè)置)去訪問后臺(tái)時(shí)候有更新,通過handler實(shí)現(xiàn)輪訓(xùn)的效果
        TinkerPatch.with().fetchPatchUpdateAndPollWithInterval();
    }
reflectApplication = false的情況為,接入 Tinker 而改造我們的 Application 類
@SuppressWarnings("unused")
@DefaultLifeCycle(application = "tinker.sample.android.app.SampleApplication",
                  flags = ShareConstants.TINKER_ENABLE_ALL,
                  loadVerifyFlag = false)
public class SampleApplicationLike extends DefaultApplicationLike {

    @Override
    public void onCreate() {
        super.onCreate();
        // 初始化TinkerPatch SDK, 更多配置可參照API章節(jié)中的,初始化 SDK
        TinkerPatch.init(this)
            .reflectPatchLibrary()
            .setPatchRollbackOnScreenOff(true)
            .setPatchRestartOnSrceenOff(true)
            .setFetchPatchIntervalByHours(3);

        // 每隔3個(gè)小時(shí)(通過setFetchPatchIntervalByHours設(shè)置)去訪問后臺(tái)時(shí)候有更新,通過handler實(shí)現(xiàn)輪訓(xùn)的效果
        TinkerPatch.with().fetchPatchUpdateAndPollWithInterval();
    }

}
介紹兩個(gè)api

如果你希望補(bǔ)丁更新更佳及時(shí)蹬刷,可以在APP啟動(dòng)或用戶登錄等一些關(guān)鍵路徑瓢捉,使用 fetchPatchUpdate(true) 強(qiáng)制檢查更新
TinkerPatch.with().fetchPatchUpdate(true);
TinkerPatch SDK 默認(rèn)在補(bǔ)丁合成成功后办成,等應(yīng)用的主進(jìn)程重新啟動(dòng)時(shí)生效泡态。若我們希望用戶可以盡快的生效,可以指定用戶鎖屏?xí)r自動(dòng)重啟應(yīng)用:
// 默認(rèn)為false
TinkerPatch.with().setPatchRestartOnSrceenOff(true);

6 項(xiàng)目中添加權(quán)限

 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

接下來演示一遍流程
1 將舊代碼打包
打開Studio右側(cè)的Gradle诈火,選擇assemableDebug打包
打正式包要注意配置簽名

圖片.png

圖片.png

完成之后如下
圖片.png

修改baskApk的編號(hào)
圖片.png

完成后打開Gradle兽赁,如下選擇tinkerPatchDebug生成補(bǔ)丁包
圖片.png

補(bǔ)丁的位置
圖片.png

發(fā)布補(bǔ)丁
圖片.png

看完上面的流程可以試一試

熱修復(fù)學(xué)習(xí)(1):Sophix
熱修復(fù)學(xué)習(xí)(2):TinkerSDK
熱修復(fù)學(xué)習(xí)(3):Tinker組件依賴

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冷守,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惊科,老刑警劉巖拍摇,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異馆截,居然都是意外死亡充活,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門蜡娶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來混卵,“玉大人,你說我怎么就攤上這事窖张∧凰妫” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵宿接,是天一觀的道長赘淮。 經(jīng)常有香客問我辕录,道長,這世上最難降的妖魔是什么梢卸? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任走诞,我火速辦了婚禮,結(jié)果婚禮上蛤高,老公的妹妹穿的比我還像新娘蚣旱。我一直安慰自己,他們只是感情好戴陡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布塞绿。 她就那樣靜靜地躺著,像睡著了一般猜欺。 火紅的嫁衣襯著肌膚如雪位隶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天开皿,我揣著相機(jī)與錄音涧黄,去河邊找鬼。 笑死赋荆,一個(gè)胖子當(dāng)著我的面吹牛笋妥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窄潭,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼春宣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嫉你?” 一聲冷哼從身側(cè)響起月帝,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎幽污,沒想到半個(gè)月后嚷辅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡距误,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年簸搞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片准潭。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡趁俊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出刑然,到底是詐尸還是另有隱情寺擂,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站沽讹,受9級(jí)特大地震影響般卑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜爽雄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一蝠检、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挚瘟,春花似錦叹谁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至订框,卻和暖如春析苫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背穿扳。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來泰國打工衩侥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人矛物。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓茫死,卻偏偏與公主長得像,于是被迫代替她去往敵國和親履羞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子峦萎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

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