美文网首页
Android热更新与开启Instant Run

Android热更新与开启Instant Run

作者: wuli大幸儿 | 来源:发表于2018-09-20 17:31 被阅读0次

配置完热更新后,直接run模式运行,程序会报以下错误:

Tinker does not support instant run mode, please trigger build by assembleDebug or disable instant run in 'File->Settings...'.

解决办法就是在File-Settings-Build,Execution,Deployment-Instant run下取消打钩,如下图。

这样设置,run运行出来的会在手机上重新安装包,删除原安装包,再运行;最重要的是不能进行代码的调试。下面是我为了让两者并存使用的方法。


第一步:在gradle.properties文件里设置标记tinkerEnable

Project中的gradle.properties为gradle的配置文件,里面可以定义一些常量供build.gradle使用。这里我们需要配置一个tinkerEnable=true(true表示需要开启trink功能,false反之)

第二步:在project的build.gradle下使用变量标记

在project的build.gradle文件的使用ext配置变量 tinkerEnabled,用来标记是否使用 TInker。

第三步:通过标记值决定是否初始化Tinker

在Module的build.gradle中配置buildConfigField参数,编译后在..\app\build\generated\source\buildConfig文件夹下会自动生成对应版本对应module的BuildConfig.java。BuildConfig就会包含对应版本的配置信息。程序中可以直接引用这些数据。所以我们通过自定义BuildConfig属性来使用tinkerEnabled变量。

第四步:通过标记值决定是否使用脚本插件

在Module的build.gradle中配置tinker插件,当然了,使用tinkerEnabled变量来判断是否引用tinker-support.gradle 构建项目。

注意:我的tinker-support.gradle文件是在app目录下的,所以这里要看你们的目录文件在哪里,否则会报错,找不到该文件。

第五步:配置SampleApplicationLike文件

根据 BuildConfig.TINKER_ENABLE 判断是否初始化 Tinker 的代码,(BuildConfig.TINKER_ENABLE的值就是gradle.properties中设置tinkerEnable的值)

OK,中间出现大大小小问题,一直困扰了好几天,现在终于实现了热更新与instant run并存的功能,只需要在第一步设置上修改tinkerEnable=false,打开instant run模式就能正常运行了。

最后感谢这边网友的文章:

引入 Tinker 之后如何在 Debug 模式下开启 Instant Run

Gradle for Android 问题总结

相关文章

网友评论

      本文标题:Android热更新与开启Instant Run

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