Tinker 熱修復框架模擬使用

導言

前不久,騰訊推出了」微信小程序」這一律念,對移動原生應用的影響可謂巨大.而幾乎就在同時,
騰訊在GitHub上開源了第一個項目Tinker,
這是一個Android平臺的應用熱修復框架.能夠在不從新安裝應用的狀況下,對應用的代碼/庫
/資源進行更新.相關信息官方也已經給出詳細介紹.
獲得這個消息時,筆者也嘗試學習它給的Sample,但願可以使用到本身的項目中去.畢竟熱修補是
現在原生應用的一大痛點,有了熱修補技術,類React Native應用的優點將縮小.
這是一篇Tinker簡單上手的說明文字,演示如何運行官方的Sample,僅做互相學習交流java

導入Sample工程

將官方給出的Sample工程
在AndroidStudio中打開.首先一點,在app的build.gradle文件中找到tinkerId = getTinkerIdValue()
並將其替換成tinkerId = "tinkerId",其中後面的值能夠隨意設置.再替換ignoreWarning = false
ignoreWarning = true.(見圖1)
圖1android

編譯運行原版apk

按照往常操做同樣,編譯打包debug apk並安裝.此時Tinker會在工程的app/build/bakApk/目錄下
保存打包好的apk文件,找到剛纔生成的apk文件,複製其完整文件名,在app的build.gradle文件找到
tinkerOldApkPath這一項設置,並將其設置爲tinkerOldApkPath = "${bakPath}/<剛纔生成的apk文件名>"(見圖2)
圖2git

修改源碼 生成新版apk 補丁

MainActivity.java中,咱們稍做改動,例如將R.string.test_resource對應的字符串資源的值修改(見圖3),github

1
2
<!--<string name="test_resource">I am in the base apk</string>-->//原值
<string name="test_resource">I am in the patch apk</string>//新值

 

還能夠在MainActivity中添加一行代碼(見圖3)小程序

1
Log.e(TAG, "i am on patch onCreate");

 

圖3
你能夠自行作出更多的改動(這也是咱們須要熱修復的緣由),而後再Gradle腳本中找到’app:/tinker/tinkerPatchDebug’這條命令(見圖4),
雙擊運行,它將生成debug版的patch(補丁)apk文件.微信小程序

運行完畢後,打開一下目錄.
微信

 


patch_signed_7zip.apk這個文件拷貝到Android設備的ExternalStorageDirectory()路徑下.
文件的路徑能夠隨意設定,只需在MainActivity中指明補丁Apk路徑便可.(見圖7)
圖7app

安裝熱修復補丁 觀察程序變化

點擊APP主界面中的LOAD PATCH加載補丁,提示成功後,點擊KILL SELF結束當前進程,
從新啓動後,便可發現變化.能夠看到,通過上述修改,原有Apk的應用啓動後在Log中打印爲(見圖8):
圖8框架

而應用補丁後,打印結果爲(見圖9):
圖9學習

而這一切就是應用了熱修復的結果.

相關文章
相關標籤/搜索