android 热更新的实现

最近由于项目越做越大,每次更新还得上传至少七八个市场,非常繁琐,于是我找遍网络,找到了不少热更新方案,其中一个名叫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,那边的小编很热情的。 
最后再感谢一个美团点评的技术团队,这个功能真是太棒了。




  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值