项目中因为使用了tinker, 且使用的是改造Application方式接入。因为构建时提示不能使用instant run, 但每次编译都很费时间。于是在网上找相关的解决方案。其实官方是有说明解决方法的。
Q: 日常调试需要使用instant run,怎么关闭tinker
A:这里分两种情况:
使用反射Application方式接入:可以直接在build.gradle中将apply from: 'tinker-support.gradle'注释掉。
改造Application方式接入:先将tinkerSupport中overrideTinkerPatchConfiguration设置为false,修改成将tinkerSupport中enable设置为false。
另外,对于使用反射Application方式接入的有这篇文章, 按照文章操作应该可以。但是如果是用的改造Application方式接入tinker, 按照官方的说明并不能运行instant run。
会报一个tinker id not found的错误。
后面查看代码知道这个时候需要将tinker.gradle 中的tinkerPatch下面的buildConfig中的第二行取消注释,即tinkerId = "1.0.1-base"这行代码需要生效。
因此如果想要在改造Application方式接入的项目中开启instant run。需要进行以下操作:
1 tinkerSupport中overrideTinkerPatchConfiguration设置为false。
2 修改tinkerSupport中enable设置为false。
3 将tinkerSupport中的buildConfig的tinkerId = "1.0.1-base" 这行打开注释(默认是被注释的)。
最终的效果如下图所示:
661.png
另外项目如果是多进程的话,就需要重启应用了。如下提示:
2.png
参考文献:
引入 Tinker 之后如何在 Debug 模式下开启 Instant Run
Bugly Android 热更新常见问题
网友评论