Android Studio中Instant Run

weixin_33860722發表於2017-04-20

Instant Run

翻譯成中文叫即時執行或直接執行模板。不過我一般習慣了叫做閃電執行,為什麼這麼叫?請看圖:


4623465-fea28420eaf85820.PNG
小閃電

有個小閃電(2.3.x版本獨立有個小閃電,2.0-2.2是和左邊執行圖示在一塊),因為是個小閃電,所以我習慣了叫做閃電執行。

在Android Studio 2.0中引入的Instant Run是執行和除錯命令的一種行為,可以顯著減少應用更新的時間。雖然您的第一次構建可能需要更長的時間才能完成,但Instant Run會將隨後的更新推送到您的應用程式,而不需要構建新的APK,因此可以更快速地看到更改(當然有些坑,慎用(比如用到地圖時,請關閉Instant Run))。

Instant Run僅在部署除錯版本變數時使用,使用Android Plugin for Gradle 2.0.0或更高版本,並在應用程式的Module級build.gradle檔案中將MinSdkVersion設定為15或更高版本。為了獲得最佳效能,將minSdkVersion設定為21或更高。

部署應用程式後,“執行”按鈕(或“除錯”按鈕)(2.0-2.2)中將顯示一個小型的黃色雷電圖示(2.3以後有獨立圖示),表示“下次執行”準備好在下次單擊按鈕時進行更新。而不是建立一個新的APK,它只會加入這些新的更改,在某些情況下,該應用甚至不需要重新啟動,立即顯示這些程式碼更改的效果。

Instant Run通過執行熱交換,溫交換或冷交換,將更新的程式碼和資源推送到連線的裝置或模擬器。它會根據您所做的更改型別自動確定要執行的交換型別。

在每次Studio更新中,我們都會看到官方會對Instant Run進行優化。

關於Instant Run

啟用和禁用Instant Run

1.開啟設定或首選項對話方塊:在Windows或Linux上,從主選單中選擇File> Settings。在Mac OSX上,我也不知道( ⊙ o ⊙ )!。

4623465-ee2538cb81b64b70.png

2.導航到Build, Execution, Deployment > Instant Run。

4623465-438624c4c1d90dd5.png

頂部選項是Instant Run。勾選/取消選中該框。

使用Instant Run時不支援的程式碼更改

有一些變化,即時使用Instant Run,也會完全構建和重新安裝應用程式。
比如:
1.更改應用程式清單
2.更改應用程式清單引用的資源
3.更改Android小部件UI元素(需要清除和重新執行)

即時執行中的程式碼型別交換

有三種型別的程式碼交換可以支援程式碼更快的除錯和執行應用程式。
1.熱交換(HOT SWAP)
2.溫暖互換(WARM SWAP)
3.冷交換(COLD SWAP)

什麼時候觸發這些互換?

當更改現有方法的實現時觸發HOT SWAP。

當更改或刪除現有資源時,會觸發WARM SWAP(res資料夾中的任何內容)

只要您的應用程式程式碼中存在結構性程式碼變更,即可使用COLD SWAP

例如:
1.新增,刪除或更改:

  • 一個例項欄位
  • 一個靜態欄位
  • 靜態方法簽名
  • 一個例項方法簽名

2.更改當前類繼承的父類
3.更改實現的介面列表
4.更改類的靜態初始化程式
5.重新排序使用動態資源ID的佈局元素

當程式碼交換髮生時會發生什麼?
HOT SWAP更改可以立即顯示 - 只要下一次呼叫實現方法的更改時。
WARM SWAP重新啟動當前活動
COLD SWAP重新啟動整個應用程式(不重新安裝)

注: 程式碼更改可以通過熱交換快速部署,但是熱交換會影響應用的初始化,所以我們不得不通過重啟應用來響應這些修改。所以有時候也是個坑。

可以進官網瞭解更多關於Instant Run的內容
Instant Run

相關文章