美文网首页Tinker使用及源码分析
Tinker和Instant Run的并存

Tinker和Instant Run的并存

作者: David_zhou | 来源:发表于2018-10-31 15:07 被阅读145次

    项目中因为使用了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 热更新常见问题

    相关文章

      网友评论

        本文标题:Tinker和Instant Run的并存

        本文链接:https://www.haomeiwen.com/subject/tdsatqtx.html