Android Tinker热修复

简介: 1. tinker项目地址下载并解压后的目录结构如下,其中tinker-sample-android是官方写的一个示例图1.png2.

1. tinker项目地址

下载并解压后的目录结构如下,其中tinker-sample-android是官方写的一个示例


img_551d03639fed56c7bf7b614acf2afa11.png
图1.png

2. 使用Android Studio直接打开此示例

打开后Gradle依赖会出现问题,将其注释后继续同步,直到出现如下错误:

Error:Execution failed for task ':app:tinkerProcessDebugManifest'.
> tinkerId is not set!!!
img_f48a9ab33676dfae45680015dd9334d4.png
图2.png

3. 解决tinkerId is not set!!!

打开/tinker-master/tinker-sample-android/app/的build.gradle文件,找到gitSha()方法,将gitRev变量的值设置为一个常量,修改后如图4.


img_f78a879ff4d5a0b67c73b8103e306263.png
图3.png
img_a1bc7a5882442a2030152531f17d4078.png
图4.png

4. 打debug包

使用gradlew assembleDebug命令打一个debug的包,成功运行后在/app/build/目录下生成一个bakApk文件夹,并在bakApk文件夹下生成形如app-debug-时间.apk与app-debug-时间-R.txt文件,可能会更多,但我这里就只有两个,如下图:

img_4eafd16dc73596117d2711012f65508d.png
图5.png

5. 文件内容修改

将app-debug-1228-17-15-24.apk的文件名中的时间1228-17-15-24复制,找到/tinker-master/tinker-sample-android/app/的build.gradle的ext函数块(如图6),并将图6中的红色框中的时间全部替换为刚刚所复制的时间,修改后同步工程。


img_24c4d3485831144f0508320902f702f1.png
图6.png

6. 生成patch包

使用gradlew tinkerPatchDebug命令生成patch包,此包的路径为/app/build/outputs/tinkerPatch/debug/目录。

img_1dc5e99e4f3a1e034aaae01e23e757e9.png
图7.png

7. 将上一步生成的patch_signed_7zip.apk包放在手机的内存卡目录下(/sdcard/)

使用命令直接推送

adb push ./app/build/outputs/tinkerPatch/debug/patch_signed_7zip.apk /storage/sdcard0/

8. 测试

打开示例后,点击LOAD PATCH,显示出Toast的内容为"patch success, please restart process", 即代表加载成功,此时需要重启app,点击KILL SELF,然后再次打开app,点击SHOW INFO即可显示如下内容


img_294bbf003e7cc0c2681dcf931e724219.png
图8.png
目录
相关文章
|
1月前
|
移动开发 监控 安全
mPaaS常见问题之Android集成dexPatch热修复运行时候无法正常进行热更新如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
34 0
|
10月前
|
安全 Java Shell
Android的热修复技术--阿里的hotfix试用
Android的热修复技术--阿里的hotfix试用
|
dexposed Java AndFix
毕业5年了还不知道Android热修复?
随着移动端业务复杂程度的增加,传统的版本更新流程显然无法满足业务和开发者的需求, 热修复技术的推出在很大程度上改善了这一局面。国内大部分成熟的主流 App都拥有自己的热更新技术,像手淘、支付宝、微信、QQ、饿了么、美团等。
|
Java AndFix 开发工具
9012年都过去了,你确定还不学安卓的热修复?(手写AndFix)
在native层进行方法的替换,将错误的方法替换为正确的方法
180 0
9012年都过去了,你确定还不学安卓的热修复?(手写AndFix)
|
jenkins Shell 持续交付
浅谈Android热修复的前因后果与实现原理。(下)
最近在集成热修复,正好要进行技术分享,所以就来好好梳理一下 热修复的前因后果。
133 0
|
存储 移动开发 缓存
浅谈Android热修复的前因后果与实现原理。(上)
最近在集成热修复,正好要进行技术分享,所以就来好好梳理一下 热修复的前因后果。
132 0
|
存储 缓存 Java
【组件健壮性】Android Java代码热修复的原理
总结Android Java代码三种热修复方式,包括自定义ClassLoader、插桩式、底层替换,并给出原理和实施流程。
|
Android开发 开发者
《深入探索Android热修复技术原理》电子版地址
热修复技术作为安全类技术的标志性衍生产物,其进入到应用化领域开始大行其道时,标志着平台发展开始迈入新阶段,这也意味着应用市场的繁荣程度、应用开发者的思维和研发模式也进入到游戏的下半程。
154 0
《深入探索Android热修复技术原理》电子版地址
|
Android开发
|
安全 算法 Java
Android 腾讯热修复 Tinker + Flutter
Android 腾讯热修复 Tinker + Flutter
936 0
Android 腾讯热修复 Tinker + Flutter