ANDROID - Android Studio 加速開發的利器「Instant Run」

Android 官方在 2015/11/23 的 Android Dev Summit 中,發佈了 Android Studio 2.0 Preview,其中有一項改變相信會讓眾多 Android 開發者眼睛為之一亮-Instant Run。

這個功能簡言之,就是快速建置與部署,廢話不多說,先來看看官方的試範視訊:

Instant Run


1.  更新專案

在 Android Studio 更新之後,從 Settings 的左視窗找到 Build, Execution, Deployment > Instant Run 可以看到如下畫面,

Instant_Run_First

如果這是一個尚未啟用 Instant Run 的專案,就會看到右上有個「Update Project」的選項,這是點擊後,專案進入進化狀態…

Instant_Run_Update_Project

轉換完成後,其實就外觀上來說,大概也看不出個所以然來…
如果真要說的話,就是執行時的 Run 圖示右下多了一個點

Instant_Run_normal

Instant_Run_running

在專案根目錄下的的 build.gradle 中 gradle  dependencies 改成了

2. 效率提升

以自己手邊的專案來說,在第一次或是 clean project 後的 build time 是比較長的,時間大概都和過去差不多,從 1m 52s 到 2m 57s 都有。不過,後續的小更新,比方說,在程式或是介面中做了點小調整,時間大概都在 3s 內,算是大輻的降低開發者的等待時間。

至於 Instant Run 所支援的層面,根據官方文件裡提到的部份大概就是,微調介面以及程式碼是沒有問題的,這個在 Android Dev Summit 中的試範中,發揮的淋漓盡致。
若是新增、刪除以及修改 resource 的 string,雖然 Instant Run 有支援,但會重啟 activity。至於其他還有很多狀況,根據文件裡的條列是不支援的,但平均來說,build time 是有降低的。

另外,值得一提的是,activity 不是每一次都需要被重新啟動,大致上狀況就如上一段所寫到的。而若是希望每次都重啟 activity,可以自行到設定(如下圖),
Instant_Run_Options

將「Restart activity on code changes」勾選起來,不然,系統也會跳出提示 XD

Instant_Run_Run_Notice_Restart_Activity

有個貼心的選項是「Show toasts in the running app when changes are applied.」是用在,開發者自己搞不太清楚,到底是否有更新時(因為不見得會重啟),會跳出提示文字。

Instant_Run_Options_ShowToasts

還有一個是值得一提的是,若這次的 build,程式碼沒有任何變動的話,系統也會跳出提示告知。

Instant_Run_Run_Notice_No_Change

已知的問題


當然,這個部份也是大家相當關心的 XD

1. transformClassesWithDexFor…

目前大概就是幾個解法

  • 將 minSdkVersion 改成 21
  • 或是將專案根目錄下 build.gradle 的 gradle dependency 改回
    classpath 'com.android.tools.build:gradle:1.3.0' ,當然,這樣就沒有 Instant Run 的能力了 XDD
  • 等官方釋出新的版本 (被打)

2015/12/06 更新:聽說會在 Alpha 3 (Preview 3) 修正

2. xml 在輸入等於後,不會自動產生雙引號(“)。

2015/12/06 更新:在 Android Studio 2.0 Preview 2 修正android_sutdio_preview_2

fix_XML_editor_autocomplete

後話


雖然是還未正式釋出的 preview 版,但 Instant Run 呈如其字面上的意思,瞬間(快速)執行,算是大大的改善過去 Android Studio 一直讓所有開發者詬病的編譯緩慢現象。雖然說剛好可以站起來休息個兩到三分鐘,但每次的小修改也都這樣的話,那還真的是…強化耐心修行好工具啊 (茶~

 

Loading Facebook Comments ...

1 關於 “ANDROID - Android Studio 加速開發的利器「Instant Run」” 的評論

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *