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下取消打鉤,如下圖。

這樣設(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)友的文章:

引入 Tinker 之后如何在 Debug 模式下開啟 Instant Run

Gradle for Android 問題總結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容