热修复系列文章3 —— 热修复--Tinker 进行热修复(debug版 跑通demo)

Demo请参考tinker-sample-android,

目录

0.参考文档
1.debug打包
--1.1 将下载下来的demo编译打包 安装在手机上
--1.2 修改bug
--1.3 修改build.gradle
--1.4 打包差异包,并推送到手机的SD卡中
--1.5 完成


0. 参考文档

① 官方文档
Tinker 接入指南
拉到最下面

热修复系列文章3 —— 热修复--Tinker 进行热修复(debug版 跑通demo)_第1张图片


1.debug打包

1.1 将下载下来的demo编译打包 安装在手机上

调用assembleDebug编译,

热修复系列文章3 —— 热修复--Tinker 进行热修复(debug版 跑通demo)_第2张图片

编译过的包保存在build/bakApk中。
【记住你编译出来的包名,后面会用到!!!】
【我这边编译出来的是app-debug-0920-14-08-05.apk】

热修复系列文章3 —— 热修复--Tinker 进行热修复(debug版 跑通demo)_第3张图片

然后将它安装到手机,点击SHOW INFO按钮,可以看到补丁并没有加载.


热修复系列文章3 —— 热修复--Tinker 进行热修复(debug版 跑通demo)_第4张图片

1.2 修改bug

对demo工程进行修改
你可以多加个toast或者log,来区分跟之前版本的区别

1.3 修改build.gradle


将步骤1.1编译出来的安装包app-debug-0920-14-08-05.apk路径
拷贝到tinkerPatch中的oldApk参数中。

具体操作:
① 打开app的build.gradle
② 将oldApk改为你之前编译出来的老的apk的路径

oldApk = "${bakPath}/app-debug-0920-14-08-05.apk"
热修复系列文章3 —— 热修复--Tinker 进行热修复(debug版 跑通demo)_第5张图片

1.4 打包差异包,并推送到手机的SD卡中

调用gradle中的tinkerPatchDebug,

热修复系列文章3 —— 热修复--Tinker 进行热修复(debug版 跑通demo)_第6张图片

成功后,补丁包与相关日志会保存在/build/outputs/tinkerPatch/

热修复系列文章3 —— 热修复--Tinker 进行热修复(debug版 跑通demo)_第7张图片

然后我们将patch_signed_7zip.apk推送到手机的sdcard中

adb命令:
>adb push patch_signed_7zip.apk的绝对路径 /storage/emulated/0/patch_signed_7zip.apk

//关于patch_signed_7zip.apk的绝对路径 
直接把文件拖进来就好了

//关于/storage/emulated/0/patch_signed_7zip.apk
其中/storage/emulated/0/可通过Environment.getExternalStorageDirectory().getAbsolutePath();获取,
//是跟下面调用的方法的最后一个参数相对应
TinkerInstaller.onReceiveUpgradePatch(getApplicationContext(), Environment.getExternalStorageDirectory().getAbsolutePath() + "/patch_signed_7zip.apk");相对应的

1.5 完成

打开1.1步骤安装的apk
点击LOAD PATCH按钮, 如果看到patch success, please restart process的toast,即可锁屏或者点击KILL SELF按钮


热修复系列文章3 —— 热修复--Tinker 进行热修复(debug版 跑通demo)_第8张图片

重新打开apk 则可以看到我们改的代码,同时点击SHOW INFO按钮,显示补丁包的确已经加载成功了。


热修复系列文章3 —— 热修复--Tinker 进行热修复(debug版 跑通demo)_第9张图片

你可能感兴趣的:(热修复系列文章3 —— 热修复--Tinker 进行热修复(debug版 跑通demo))