android中热更新模式,Android热更新与开启Instant Run

配置完热更新后,直接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下取消打钩,如下图。

f290fa9df7f0

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

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

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

f290fa9df7f0

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

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

f290fa9df7f0

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

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

f290fa9df7f0

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

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

f290fa9df7f0

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

第五步:配置SampleApplicationLike文件

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

f290fa9df7f0

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值