前不久,騰訊推出了」微信小程序」這一律念,對移動原生應用的影響可謂巨大.而幾乎就在同時,
騰訊在GitHub上開源了第一個項目Tinker,
這是一個Android平臺的應用熱修復框架.能夠在不從新安裝應用的狀況下,對應用的代碼/庫
/資源進行更新.相關信息官方也已經給出詳細介紹.
獲得這個消息時,筆者也嘗試學習它給的Sample,但願可以使用到本身的項目中去.畢竟熱修補是
現在原生應用的一大痛點,有了熱修補技術,類React Native應用的優點將縮小.
這是一篇Tinker簡單上手的說明文字,演示如何運行官方的Sample,僅做互相學習交流java
將官方給出的Sample工程
在AndroidStudio中打開.首先一點,在app的build.gradle文件中找到tinkerId = getTinkerIdValue()
並將其替換成tinkerId = "tinkerId"
,其中後面的值能夠隨意設置.再替換ignoreWarning = false
爲ignoreWarning = true
.(見圖1)
android
按照往常操做同樣,編譯打包debug apk並安裝.此時Tinker會在工程的app/build/bakApk/
目錄下
保存打包好的apk文件,找到剛纔生成的apk文件,複製其完整文件名,在app的build.gradle文件找到tinkerOldApkPath
這一項設置,並將其設置爲tinkerOldApkPath = "${bakPath}/<剛纔生成的apk文件名>"
(見圖2)
git
在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");
|
你能夠自行作出更多的改動(這也是咱們須要熱修復的緣由),而後再Gradle腳本中找到’app:/tinker/tinkerPatchDebug’這條命令(見圖4),
雙擊運行,它將生成debug版的patch(補丁)apk文件.微信小程序
運行完畢後,打開一下目錄.
微信
將patch_signed_7zip.apk
這個文件拷貝到Android設備的ExternalStorageDirectory()
路徑下.
文件的路徑能夠隨意設定,只需在MainActivity
中指明補丁Apk路徑便可.(見圖7)
app
點擊APP主界面中的LOAD PATCH
加載補丁,提示成功後,點擊KILL SELF
結束當前進程,
從新啓動後,便可發現變化.能夠看到,通過上述修改,原有Apk的應用啓動後在Log中打印爲(見圖8):
框架
而這一切就是應用了熱修復的結果.