疊代程式碼開發

行動開發人員通常會逐步開發應用程式的 UI,而非一次完成所有開發作業。Android Studio 也透過 Jetpack Compose 實踐這種做法,我們提供不需要完整建構就能檢查、修改值並驗證最終結果的各種工具。

即時編輯

「即時編輯」功能可讓您即時更新模擬器和實體裝置中的可組合項。這項功能可在編寫與建構應用程式的過程中盡量減少切換畫面,讓您長時間專注於編寫程式碼而不受干擾。

即時編輯有三種模式:

  • 手動:系統會在您使用 Control + ' (在 macOS 上為 Command + ') 手動推送時套用程式碼變更。
  • 儲存時手動套用:系統會在您使用 Control + S (在 macOS 上為 Command + S) 手動儲存時套用程式碼變更。
  • 自動:更新可組合函式後,系統會在裝置或模擬器中套用變更。

即時編輯功能主要針對與使用者介面和使用者體驗相關的程式碼變更,不支援更新方法簽章、新增方法或變更類別階層等異動項目。詳情請參閱即時編輯的限制清單。

這項功能無法取代建構及執行應用程式或套用變更功能,其主要用途是對 Compose 使用者介面開發過程中的建構、部署及疊代工作流程進行最佳化。

最佳工作流程如下:

  1. 設定讓應用程式順利執行。
  2. 盡可能使用即時編輯功能,除非您需要進行這項功能不支援的變更,例如在應用程式執行期間新增方法。
  3. 在完成不支援的變更後,按一下「Run」圖示 執行圖示 即可重新啟動應用程式並繼續執行即時編輯功能。

開始使用即時編輯功能

如要開始使用這項功能,請按照下列步驟建立空白的 Compose Activity、為專案啟用即時編輯功能,並透過即時編輯功能進行變更。

設定新專案

  1. 在開始之前,請確認您已安裝 Android Studio Giraffe 以上版本,且實體裝置或模擬器的 API 級別為 30 以上。

  2. 開啟 Android Studio,並在「Welcome to Android Studio」對話方塊中選取「New Project」。如果您已開啟專案,請依序前往「File」 >「New」 >「New Project」,即可建立新專案。

  3. 針對「Phone and Tablet」選擇「Empty Compose Activity」範本,然後按一下「Next」

    在 Android Studio 中選取範本
    圖 1 可供選擇的範本。針對即時編輯功能,請選擇「Empty Compose Activity」
  4. 在「New Project」對話方塊中填妥以下必要資訊:名稱、套件名稱、儲存位置、SDK 最低需求版本,以及建構設定語言。

    在 Android Studio 中輸入步驟 4 的專案設定範例
    圖 2. 專案設定範例。
  5. 按一下「Finish」

啟用即時編輯功能

  1. 前往設定啟用即時編輯功能。

    • 在 Windows 或 Linux 上,依序前往「File」 >「Settings」 >「Editor」 >「Live Edit」
    • 在 macOS 上,依序前往「Android Studio」 >「Settings」 >「Editor」 >「Live Edit」
  2. 從設定中選取「Live Edit」選項和要執行的模式。

    在手動模式中,每當您按下 Control +' (在 macOS 上為 Command +') 時,系統就會推送程式碼變更;在手動模式下儲存時,每當您使用 Control + S 鍵 (在 macOS 上為 Command + S 鍵) 手動儲存程式碼變更,系統就會套用這些變更。在自動模式中,當您變更程式碼,相關變更就會立即套用到您的裝置或模擬器中。

    Android Studio 設定中的「Live Edit」核取方塊使用者介面
    圖 3 即時編輯設定
  3. 在編輯器中開啟 MainActivity 檔案,這是應用程式的進入點。

  4. 按一下「Run」使用者介面按鈕 即可部署應用程式。

  5. 開啟即時編輯功能後,「Running Devices」工具視窗右上方會顯示「Up-to-date」綠色勾號:

    即時編輯功能的綠色勾號使用者介面

進行變更並檢查變更結果

如果系統支援您在編輯器中所做的變更,虛擬/實體測試裝置會自動更新。

例如,將 MainActivity 中現有的 Greeting 方法修改為以下內容:

@Composable
fun Greeting(name: String) {
    Text(
        text = "Hello $name!",
        Modifier
            .padding(80.dp) // Outer padding; outside background
            .background(color = Color.Cyan) // Solid element background color
            .padding(16.dp) // Inner padding; inside background, around text)
    )
}

您的變更會立即顯示在測試裝置上,如圖 4 所示。

套用至裝置的 Greeting 方法變更內容
圖 4:測試裝置顯示對 Greeting 方法進行的即時編輯變更內容。

即時編輯疑難排解

如果測試裝置上沒有顯示編輯內容,表示 Android Studio 可能無法更新這些內容。請檢查即時編輯指標是否顯示「Out Of Date」(如圖 5 所示),這表示發生編譯錯誤。如要進一步瞭解該錯誤與解決方式建議,請按一下指標。

即時編輯功能過時的圖示
圖 5 即時編輯狀態指標。

即時編輯的限制

目前的限制清單如下。

  • [僅適用於 Android Studio Giraffe 以上版本] 即時編輯功能需要 Compose Runtime 1.3.0 以上版本。如果專案使用較舊的 Compose 版本,即時編輯會處於停用狀態。

  • [僅適用於 Android Studio Giraffe 以上版本] 即時編輯功能需要 AGP 8.1.0-alpha05 以上版本。如果專案使用較舊的 AGP 版本,即時編輯會處於停用狀態。

  • 「即時編輯」僅適用於搭載 API 級別 30 以上的實體裝置或模擬器。

  • 即時編輯功能僅支援編輯函式主體,代表您無法變更函式名稱或簽章、新增或移除函式,或是變更非函式欄位。

  • 您第一次在檔案中變更 Compose 函式時,即時編輯功能會重設應用程式的狀態。這只會在第一次變更程式碼後發生,因為您在該檔案中對 Compose 函式所做的後續程式碼變更不會重設應用程式狀態。

  • 透過即時編輯功能修改過的類別可能會對效能產生負面影響。如要評估應用程式效能,請使用簡潔的發布子版本執行應用程式。

  • 您必須進行完整的執行作業,才能讓偵錯工具對透過即時編輯功能修改過的類別執行偵錯。

  • 假如您透過即時編輯功能編輯執行中的應用程式,可能會導致應用程式當機。如果發生這種情況,您可以用「Run」UI 按鈕 按鈕重新部署應用程式。

  • 即時編輯功能不會執行您在專案建構檔案中定義的任何位元碼操控設定,例如使用「Build」選單中的選項,或是點選「Build」或「Run」按鈕時,會在建構專案時套用的位元碼操控設定。

  • 非可組合函式會在裝置或模擬器上即時更新,並觸發完整重組功能。完整重組功能可能不會叫用已更新的函式。如果是非可組合函式,您必須觸發更新後的函式或再次執行應用程式。

  • 應用程式重新啟動後,系統不會一併恢復即時編輯功能,因此您必須再次執行應用程式。

  • 即時編輯功能僅支援可進行偵錯的程序。

  • 如果專案在建構設定中針對 kotlinOptions 底下的 moduleName 使用自訂值,則即時編輯功能不提供支援。

  • 即時編輯功能不適用於多次部署作業。換句話說,您無法先部署至某部裝置,再部署至另一部裝置。即時編輯功能只會在已部署應用程式的最後一組裝置上啟用。

  • 即時編輯功能支援多裝置部署作業 (可部署至多部裝置,但這些裝置必須透過點選「目標裝置」下拉式選單中的「選取多部裝置」建立)。不過,由於系統並未正式支援這項功能,因此可能發生問題。如果您遇到問題,請回報

  • 「Apply Changes」/「Apply Code Changes」與即時編輯功能不相容,且需要重新啟動執行中的應用程式。

  • 即時編輯功能目前不支援 Android Automotive 專案。

即時編輯功能常見問題

  • 即時編輯功能目前處於什麼狀態?

    Android Studio Giraffe 提供即時編輯功能。如要開啟這項功能,請依序前往「File」 >「Settings」 >「Editor」 >「Live Edit」 (在 macOS 上為「Android Studio」 >「Settings」 >「Editor」 >「Live Edit」)。

  • 何時該使用即時編輯功能?

    當您要快速查看使用者體驗元素更新 (例如修飾符更新和動畫) 對整體應用程式體驗的影響時,就可以使用即時編輯功能。

  • 何時該避免使用即時編輯功能?

    即時編輯功能主要針對與使用者介面和使用者體驗相關的程式碼變更,不支援更新方法簽章、新增方法或變更類別階層等異動項目。詳情請參閱「即時編輯的限制」。

  • 何時該使用 Compose 預覽?

    開發個別可組合項時,就可以使用 Compose 預覽功能。預覽功能會以視覺化的方式呈現 Compose 元素,並能自動重新整理,以顯示程式碼變更的效果。此外,預覽功能也能讓您查看不同設定和狀態下的 UI 元素,例如深色主題、語言代碼和字型大小。

常值即時編輯 (已淘汰)

Android Studio 可以在預覽、模擬器和實體裝置內,即時更新組件中使用的部分常數常值。以下列舉部分支援的類型:

  • Int
  • String
  • Color
  • Dp
  • Boolean

影片:使用者變更原始碼中的常值,預覽畫面隨之動態更新

只要透過常值即時編輯功能的使用者介面指標啟用常值裝飾功能,就能查看觸發即時更新的常數常值,而不必進行編譯步驟:

啟用常值即時編輯功能

套用變更

套用變更可讓您更新程式碼和資源,而不必重新將應用程式部署到模擬器或實體裝置上 (有幾項限制)。

新增、修改或刪除可組合項時,按一下「Apply Code Changes」按鈕即可更新應用程式,不必重新部署:

使用者按一下「套用變更」按鈕