前不久,腾讯推出了”微信小程序”这一律念,对移动原生应用的影响可谓巨大.而几乎就在同时,
腾讯在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):框架
而这一切就是应用了热修复的结果.