配置完熱更新后,直接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下取消打鉤,如下圖。

這樣設(shè)置,run運行出來的會在手機上重新安裝包,刪除原安裝包,再運行;最重要的是不能進行代碼的調(diào)試。下面是我為了讓兩者并存使用的方法。
第一步:在gradle.properties文件里設(shè)置標(biāo)記tinkerEnable
Project中的gradle.properties為gradle的配置文件,里面可以定義一些常量供build.gradle使用。這里我們需要配置一個tinkerEnable=true(true表示需要開啟trink功能,false反之)

第二步:在project的build.gradle下使用變量標(biāo)記
在project的build.gradle文件的使用ext配置變量 tinkerEnabled,用來標(biāo)記是否使用 TInker。

第三步:通過標(biāo)記值決定是否初始化Tinker
在Module的build.gradle中配置buildConfigField參數(shù),編譯后在..\app\build\generated\source\buildConfig文件夾下會自動生成對應(yīng)版本對應(yīng)module的BuildConfig.java。BuildConfig就會包含對應(yīng)版本的配置信息。程序中可以直接引用這些數(shù)據(jù)。所以我們通過自定義BuildConfig屬性來使用tinkerEnabled變量。

第四步:通過標(biāo)記值決定是否使用腳本插件
在Module的build.gradle中配置tinker插件,當(dāng)然了,使用tinkerEnabled變量來判斷是否引用tinker-support.gradle 構(gòu)建項目。

注意:我的tinker-support.gradle文件是在app目錄下的,所以這里要看你們的目錄文件在哪里,否則會報錯,找不到該文件。
第五步:配置SampleApplicationLike文件
根據(jù)?BuildConfig.TINKER_ENABLE?判斷是否初始化?Tinker?的代碼,(BuildConfig.TINKER_ENABLE的值就是gradle.properties中設(shè)置tinkerEnable的值)

OK,中間出現(xiàn)大大小小問題,一直困擾了好幾天,現(xiàn)在終于實現(xiàn)了熱更新與instant run并存的功能,只需要在第一步設(shè)置上修改tinkerEnable=false,打開instant run模式就能正常運行了。
最后感謝這邊網(wǎng)友的文章: