参考文档:
一次集成使用Tinker热更新的体验
微信Android热补丁方案Tinker初步使用
Tinker 接入指南
Release的使用方法总结:
① 每次编译或发包将安装包与mapping文件备份;
② 若有补丁包的需要,按自身需要修改你的代码、库文件等;
③ 将备份的基准安装包与mapping文件输入到tinkerPatch的配置中;
④ 运行tinkerPatchRelease,即可自动编译最新的安装包,并与输入基准包作差异,得到最终的补丁包。
Demo请参考tinker-sample-android,
目录
2.release打包
-- 2.1 将下载下来的demo编译打包release版本 安装在手机上
-- 2.2 修改bug
-- 2.3 修改build.gradle
-- 2.4 打包差异包,并推送到手机的SD卡中
-- 2.5 完成
2.release打包
2.1 将下载下来的demo编译打包release版本 安装在手机上
首先直接运行task assembleRelease
编译过的包保存在build/bakApk中。
并且我们可以看到在build/bakApk文件夹内已经生成了三个文件:
【记住你编译出来的包名,后面会用到!!!】
【执行assembleDebug 没有mapping文件。】
然后将它安装到手机,点击SHOW INFO按钮,可以看到补丁并没有加载.
2.2 修改bug
对demo工程进行修改
你可以多加个toast或者log,来区分跟之前版本的区别
2.3 修改build.gradle
具体操作:
① 打开app的build.gradle
② 配置三个文件路径
2.4 打包差异包,并推送到手机的SD卡中
调用gradle中的tinkerPatchRelease,
成功后,补丁包与相关日志会保存在/build/outputs/tinkerPatch/。
然后我们将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");相对应的
2.5 完成
打开2.1步骤安装的apk
点击LOAD PATCH按钮, 如果看到patch success, please restart process的toast,即可锁屏或者点击KILL SELF按钮
重新打开apk 则可以看到我们改的代码,同时点击SHOW INFO按钮,显示补丁包的确已经加载成功了。