微信熱修復(fù)Tinker使用

Tinker是微信前段時(shí)間開源的Android熱補(bǔ)丁方案,它支持動(dòng)態(tài)下發(fā)代碼抗斤、So庫以及資源禽篱,讓應(yīng)用能夠在不需要重新安裝的情況下實(shí)現(xiàn)更新畜伐。當(dāng)然馍惹,你也可以使用Tinker來更新你的插件躺率。
同時(shí)玛界,還有許多其他公司使用的熱補(bǔ)丁方案,如比如QZone,AndFix,Dexposed等等悼吱;網(wǎng)上有許多他們之間的比較文章慎框,大家可以參考后選擇適合自己的。本文就簡單介紹下Tinker的使用后添。

添加依賴

這一步很簡單笨枯,照著 github接入指南 上做就好了。

  • 首先在項(xiàng)目的build.gradle中添加 tinker-patch-gradle-plugin 依賴

buildscript {
dependencies {
classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.7.1')
}
}

* 然后在app的**gradle**文件 **app/build.gradle**添加tinker的庫依賴以及apply tinker的gradle插件.
>```
  dependencies {
        //可選遇西,用于生成application類  
        compile('com.tencent.tinker:tinker-android-anno:1.7.1') 
        //tinker的核心庫 
        compile('com.tencent.tinker:tinker-android-lib:1.7.1')
   }
  ...
  ...
  //apply tinker插件
  apply plugin: 'com.tencent.tinker.patch'
  • 在app/builde.gradle文件的dependencies外面添加一些配置 :

tinkerPatch {
//有問題的apk的地址
oldApk = "F://app_bug.apk"
ignoreWarning = false
useSign = true
buildConfig{
tinkerId = "1.0"
}
packageConfig{
configField("TINKER_ID", "1.0")
}
dex{
dexMode = "jar"
pattern = ["classes.dex", "assets/secondary-dex-?.jar"]
loader = ["com.tencent.tinker.loader.
", "com.tinkertest.Application"]
}
lib{
pattern = ["lib/armeabi/.so","lib/arm64-v8a/.so","lib/armeabi-v7a/.so","lib/mips/.so","lib/mips64/.so","lib/x86/.so","lib/x86_64/.so"]
}
res{
pattern = ["res/
", "assets/*", "resources.arsc", "AndroidManifest.xml"]
largeModSize = 100
}
sevenZip{
zipArtifact = "com.tencent.mm:SevenZip:1.1.10"
}


##### 自定義Application類
1.寫一個(gè)SimpleAppLike類繼承自DefaultApplicationLike,并添加注解馅精。使用注解生成application類*demo.com.tinkerdemo.SimpleApp*,并將其添加到manifest中
>  ![1111.png](http://upload-images.jianshu.io/upload_images/2124523-64f85d7c500447d7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


2.重寫SimpleAppLike里面的*onBaseContextAttached(Context base)*方法粱檀,并添加*registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks  callback)*方法洲敢。
> ```
@Override
public void onBaseContextAttached(Context base) { 
   super.onBaseContextAttached(base); 
   MultiDex.install(base);    
   TinkerInstaller.install(this);
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public void registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callback) {
    getApplication().registerActivityLifecycleCallbacks(callback);
}

3.在SimpleAppLike中實(shí)現(xiàn)你Application 類需要實(shí)現(xiàn)的內(nèi)容。

簡單使用

1.先將你的app運(yùn)行到手機(jī)上茄蚯,并復(fù)制一份到第一步中的oldApk目錄
2.修改app的代碼压彭,例如修改文字,Toast等渗常,在實(shí)際中即修復(fù)bug壮不。
2.在android-studio右邊點(diǎn)開gradle窗口,選擇tinkerPatchDebug,并運(yùn)行生成補(bǔ)丁包

222.png

3.在app->build->outputs->tinkerPatch目錄下選擇patch_signed_7zip.apk皱碘;并拷到指定手機(jī)目錄(指定的運(yùn)行目錄,見步驟5)
333.png

4.在app中執(zhí)行更新询一,退出后再進(jìn)入app,就能看到修改后的效果尸执。
5.圖中path為指定目錄家凯,在執(zhí)行TinkerInstaller.onReceiverUpgradePatch()修復(fù)時(shí)需要傳入的path即為存放生成的補(bǔ)丁包的位置。

123.png

結(jié)語

以上介紹了Tinker的使用方法,作者是個(gè)菜鳥如失,難免有講的不好的地方绊诲,請見諒。
示例Demo

這是Tinker的項(xiàng)目地址褪贵,也有很好的講解掂之,可以深入學(xué)習(xí)。

官方demo:tinker-sample-android 
注:官方demo 需要作為project單獨(dú)打開

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脆丁,一起剝皮案震驚了整個(gè)濱河市世舰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌槽卫,老刑警劉巖跟压,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異歼培,居然都是意外死亡震蒋,警方通過查閱死者的電腦和手機(jī)茸塞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來查剖,“玉大人钾虐,你說我怎么就攤上這事∷褡” “怎么了效扫?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長直砂。 經(jīng)常有香客問我菌仁,道長,這世上最難降的妖魔是什么静暂? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任掘托,我火速辦了婚禮,結(jié)果婚禮上籍嘹,老公的妹妹穿的比我還像新娘闪盔。我一直安慰自己,他們只是感情好辱士,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布泪掀。 她就那樣靜靜地躺著,像睡著了一般颂碘。 火紅的嫁衣襯著肌膚如雪异赫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天头岔,我揣著相機(jī)與錄音塔拳,去河邊找鬼。 笑死峡竣,一個(gè)胖子當(dāng)著我的面吹牛靠抑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播适掰,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼颂碧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了类浪?” 一聲冷哼從身側(cè)響起载城,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎费就,沒想到半個(gè)月后诉瓦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年睬澡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呼寸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,745評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猴贰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出河狐,到底是詐尸還是另有隱情米绕,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布馋艺,位于F島的核電站栅干,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏捐祠。R本人自食惡果不足惜碱鳞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望踱蛀。 院中可真熱鬧窿给,春花似錦、人聲如沸率拒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猬膨。三九已至角撞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間勃痴,已是汗流浹背谒所。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沛申,地道東北人劣领。 一個(gè)月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像铁材,于是被迫代替她去往敵國和親剖踊。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評論 2 354

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

  • 1.熱修復(fù): 熱修復(fù)從原理上說應(yīng)該是屬于插件化的一類,我們可以用熱修復(fù)來處理線上緊急的bug,而不需要提示用戶重新...
    茴香豆的第五種寫法閱讀 1,407評論 0 1
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,082評論 25 707
  • Tinker使用 前言 寫在前面的話衫贬,在上家公司一直在主導(dǎo)組件框架的開發(fā)德澈,所以對Android領(lǐng)域組件化,熱更新的...
    徐正峰閱讀 1,888評論 6 6
  • 前言 熱更新能力是Bugly為解決開發(fā)者緊急修復(fù)線上bug固惯,而無需重新發(fā)版讓用戶無感知就能把問題修復(fù)的一項(xiàng)能力梆造。B...
    Smile__EveryDay閱讀 24,853評論 31 19
  • 中國傳統(tǒng)圖案指的是由歷代沿傳下來的具有獨(dú)特民族藝術(shù)風(fēng)格的圖案。中國傳統(tǒng)圖案源于原始社會(huì)的彩陶圖案忽肛,已有6000~7...
    藝伙閱讀 1,236評論 0 6