使用Tinker進(jìn)行熱更新

為什么使用Tinker

  • 大家都知到線上的項(xiàng)目缠黍,最怕的事情是出了bug,這就意味這得重新發(fā)版本,這一直以來就是很頭疼的事情,所以增量更新是一個(gè)必然的趨勢冶共,在用戶沒有感知的情況修復(fù)bug,也不用加班趕著上新版本脱盲,剩余的時(shí)間好處很多邑滨,老司機(jī)都懂!


Tinker的介紹

  • 廢話不說先上地址
    Tinker
  • Tinker是微信官方的Android熱補(bǔ)丁解決方案钱反,它支持動(dòng)態(tài)下發(fā)代碼掖看、So庫以及資源,讓應(yīng)用能夠在不需要重新安裝的情況下實(shí)現(xiàn)更新
  • 建議大家使用gradle的接入方式面哥,一來可以很方便的集成哎壳,二來版本更新的時(shí)候只需要修改gradle配置文件,但是還是不建議項(xiàng)目初期就導(dǎo)入這個(gè)東西尚卫,可以在項(xiàng)目上線后在接入归榕,目前Tinker不支持Instant Run,需要在Setting中取消Enable Instant Runx選項(xiàng),下面是接入的方法
  1. 在項(xiàng)目的[build.gradle]中吱涉,添加tinker-patch-gradle-plugin的依賴
buildscript {
    dependencies {
        classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.7.11')
    }
}
  1. 然后在app的gradle文件[app/build.gradle]我們需要添加tinker的庫依賴以apply tinker的gradle插件
dependencies {
    //可選蹲坷,用于生成application類 
    provided('com.tencent.tinker:tinker-android-anno:1.7.11')
    //tinker的核心庫
    compile('com.tencent.tinker:tinker-android-lib:1.7.11') 
}
...
...
//apply tinker插件
apply plugin: 'com.tencent.tinker.patch'
  1. 配置好這些之后我們可以下載官方的demo找到 build.gradle文件驶乾,從build.gradle 的第127行開始復(fù)制粘貼到自己的app/build.gradle文件中
  def bakPath = file("${buildDir}/bakApk/")......

4.注意配置apk路徑

  ext {
    //for some reason, you may want to ignore tinkerBuild, such as instant run debug build?
    tinkerEnabled = true
    //for normal build
    //舊版本apk路徑配置
    tinkerOldApkPath = "${bakPath}/app-debug-xxxx-14-05-21.apk"
    //用于混淆,沒有混淆可以不管
    tinkerApplyMappingPath = "${bakPath}/app-debug-xxxx-14-05-21-mapping.txt"
    //舊版本apk R文件
    tinkerApplyResourcePath = "${bakPath}/app-debug-xxxx-14-05-21-R.txt"

    //only use for build all flavor, if not, just ignore this field
    tinkerBuildFlavorDirectory = "${bakPath}/app-debug-xxxx-14-05-21"
}

5.新建自己的Application

  • 繼承DefaultApplicationLike 并重寫onBaseContextAttached 循签,框架會(huì)自動(dòng)生成所需要的application

  • 打開自己的AndroidManifest.xml 在application 節(jié)點(diǎn)下配置android:name=”xxx.xxx.xxx.xxxApplication”

  • 由于我們的項(xiàng)目已有自己的Application级乐,為了避免改動(dòng)可以將項(xiàng)目中的Application 繼承TinkerApplication(此時(shí)onCreate方法會(huì)報(bào)錯(cuò)),去掉onCreate方法县匠,將onCreate方法中的初始化操作單獨(dú)抽一個(gè)init方法出來风科,再合適的時(shí)機(jī)進(jìn)行調(diào)用,例如MainActivity乞旦,這樣我們其他引用Application的地方都不需要改動(dòng)贼穆。

  • 接下來就很簡單了,在as右邊找到Gradle projects下的Tinkerr然后build

  • 這時(shí)我們打開 app/build/output發(fā)現(xiàn)多了一個(gè)tinkerPatch 文件夾兰粉,其中patch_signed_7zip.apk 就是我們的補(bǔ)丁文件

  • 接下在合適的時(shí)候加載補(bǔ)丁故痊,就可以實(shí)現(xiàn)熱更新!
    重要重要重要玖姑,如果要打補(bǔ)丁包愕秫,不要直接提交修復(fù)BUG后的代碼 一定要先保存一個(gè)基準(zhǔn)包(這里的基準(zhǔn)包其實(shí)就是指你的線上發(fā)版的包,可以建立一個(gè)包來專門保存這些apk文件)

Tinker目前存在的問題

1.Tinker不支持修改AndroidManifest.xml焰络,Tinker不支持新增四大組件戴甩;
2.由于Google Play的開發(fā)者條款限制,不建議在GP渠道動(dòng)態(tài)更新代碼闪彼;
3.在Android N上甜孤,補(bǔ)丁對應(yīng)用啟動(dòng)時(shí)間有輕微的影響;
4.不支持部分三星android-21機(jī)型畏腕,加載補(bǔ)丁時(shí)會(huì)主動(dòng)拋出"TinkerRuntimeException:checkDexInstall failed"缴川;
5.對于資源替換,不支持修改remoteView描馅。例如transition動(dòng)畫二跋,notification icon以及桌面圖標(biāo)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末流昏,一起剝皮案震驚了整個(gè)濱河市扎即,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌况凉,老刑警劉巖谚鄙,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刁绒,居然都是意外死亡闷营,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來傻盟,“玉大人速蕊,你說我怎么就攤上這事∧锔埃” “怎么了规哲?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長诽表。 經(jīng)常有香客問我唉锌,道長,這世上最難降的妖魔是什么竿奏? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任袄简,我火速辦了婚禮,結(jié)果婚禮上泛啸,老公的妹妹穿的比我還像新娘绿语。我一直安慰自己,他們只是感情好候址,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布吕粹。 她就那樣靜靜地躺著,像睡著了一般宗雇。 火紅的嫁衣襯著肌膚如雪昂芜。 梳的紋絲不亂的頭發(fā)上莹规,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天赔蒲,我揣著相機(jī)與錄音,去河邊找鬼良漱。 笑死舞虱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的母市。 我是一名探鬼主播矾兜,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼患久!你這毒婦竟也來了椅寺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蒋失,失蹤者是張志新(化名)和其女友劉穎返帕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篙挽,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荆萤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片链韭。...
    茶點(diǎn)故事閱讀 40,146評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡偏竟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出敞峭,到底是詐尸還是另有隱情踊谋,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布儡陨,位于F島的核電站褪子,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏骗村。R本人自食惡果不足惜嫌褪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望胚股。 院中可真熱鬧笼痛,春花似錦、人聲如沸琅拌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽进宝。三九已至刻坊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間党晋,已是汗流浹背谭胚。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留未玻,地道東北人灾而。 一個(gè)月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像扳剿,于是被迫代替她去往敵國和親旁趟。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評論 2 356

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