android 热更新的实现

xiaoxiao2021-02-28  123

最近由于项目越做越大,每次更新还得上传至少七八个市场,非常繁琐,于是我找遍网络,找到了不少热更新方案,其中一个名叫Robust的热修复非常给力。

这是美团点评在github上的一个开源项目:https://github.com/Meituan-Dianping/Robust。

经过几天的学习,和在小编的帮助下,终于在自己的项目中跑了一遍,现在分享一下心得,将这几天踩得坑分享一下,避免你再走老路,(其实我也是看了issues里面有人问过的问题)

1首先在总的build.gradle中的dependencies中添加

classpath 'com.meituan.robust:gradle-plugin:0.3.7' classpath 'com.meituan.robust:auto-patch-plugin:0.3.7' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'

现在最新的更新到了0.3.7。

2在app的build.gradle中

apply plugin: 'com.android.application'

之后添加

//apply plugin: 'auto-patch-plugin' ---标记1 待会要回来 apply plugin: 'robust' 在buildTypes中把混淆开了,我跟人觉得不加混淆之后一系列会变得很奇怪,当然你可以试一下不加混淆,那么之后就不必为mapping文件的问题烦了,不过我没试通过。 3.把原项目中的那个gradle_mvn_push.gradle加上,不让报错 还要在gradle.properties文件中添加,尽量跟原项目一致,还有一些附加的也加上,可以通过控制变量法排除你不需要的。VERSION_NAME=0.3.7 GROUP=com.meituan.robust hotfixPackage 4把robust.xml文件复制过来,我是修改了 hotfixPackage和patchPackname 把包名改自己的,并且在PathManipulateImp中的setPatchesInfoImplClassFullName方法中包名保持一致,类名用PatchesInfoImpl 到这就配置好了,之后你直接在terminal中输入gradlew clean assembleRelease --stacktrace --no-daemon回车,就可以等一段时间,直到发现build success,完成第一步的操作,将outputs中mapping.txt和methodsMap.robust复制到src平级目录robust中。将标记1 代码段打开,之后(以下是我的简单修改),我是将按钮点击方法中的toast弹出信息修改了一下,在方法的上面修改@Modify,并且在最外面的方法中加上@Modify,之后再在terminal中输入老一句话, 回车之后的等待一段时间,出现build faild 你就可能成功了,再看一下有没有 java.lang.RuntimeException:auto patch end successfully,表示成功了。你可以看一下在outputs文件夹下有没有出现patch.jar文件,出现表示成功,你先安装之前一下出现的app,运行一下,看原来的弹出信息,之后利用手机助手之类的将patch文件复制到sd卡的robust文件夹下,没有就自己创建。在运行一下那个修复按钮吗,按钮对应的方法new PatchExecutor(getApplicationContext(), new PatchManipulateImp(), new Callback()).start(); 之后看一下那个弹出信息的点击是否已经修改了弹出信息了。有问题可以留言,也可以直接去美团点评的github上去issurs,那边的小编很热情的。 最后再感谢一个美团点评的技术团队,这个功能真是太棒了。

转载请注明原文地址: https://www.6miu.com/read-28467.html

最新回复(0)