項目中因為使用了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" 這行打開注釋(默認是被注釋的)。
最終的效果如下圖所示:
另外項目如果是多進程的話,就需要重啟應用了。如下提示:
參考文獻:
引入 Tinker 之后如何在 Debug 模式下開啟 Instant Run
Bugly Android 熱更新常見問題