Android Studio Iguana | 2023.2.1

Android Studio 是用於 Android 開發作業的官方 IDE,包含建構 Android 應用程式所需的各項資源。

本頁將列出 Android Studio Iguana 穩定版的最新功能和改善項目。您可以透過這個連結下載,也可以在 Android Studio 中更新,方法是依序點選「Help」>「Check for updates」(在 macOS 上為「Android Studio」>「Check for updates」)。

如要查看這個版本的 Android Studio 修正的項目,請參閱「已關閉的問題」。

如要查看舊版 Android Studio 的版本資訊,請參閱「過往版本」。

如要搶先體驗即將推出的功能和改善項目,請參閱「Android Studio 預先發布版」。

如果使用 Android Studio 時遇到問題,請參閱已知問題疑難排解頁面。

Android Gradle 外掛程式與 Android Studio 相容性

Android Studio 建構系統以 Gradle 為基礎,Android Gradle 外掛程式 (AGP) 則加入了建構 Android 應用程式專用的功能。下表列出各個 Android Studio 版本所需的 AGP 版本。

Android Studio 版本 所需的 AGP 版本
Jellyfish | 2023.3.1 3.2-8.4
Iguana | 2023.2.1 3.2-8.3
Hedgehog | 2023.1.1 3.2-8.2
Giraffe | 2022.3.1 3.2-8.1
Flamingo | 2022.2.1 3.2-8.0
Electric Eel | 2022.1.1 3.2-7.4

較舊版本

Android Studio 版本 所需的 AGP 版本
Dolphin | 2021.3.1 3.2-7.3
Chipmunk | 2021.2.1 3.2-7.2
Bumblebee | 2021.1.1 3.2-7.1
Arctic Fox | 2020.3.1 3.1-7.0

如要瞭解 Android Gradle 外掛程式的新功能,請參閱 Android Gradle 外掛程式版本資訊

支援 Android API 級別的最低工具版本

Android Studio 和 AGP 有支援特定 API 級別的最低版本。如果您使用的 Android Studio 或 AGP 版本低於專案的 targetSdkcompileSdk 所需版本,可能會導致非預期的問題。建議您使用最新的 Android Studio 和 AGP 預先發布版,處理針對 Android 作業系統預先發布版的專案。您可以一併安裝 Android Studio 的預先發布版和穩定版

Android Studio 和 AGP 的最低版本如下:

API 級別 Android Studio 最低版本 AGP 最低版本
VanillaIceCream 預覽 Jellyfish | 2023.3.1 8.4
34 Hedgehog | 2023.1.1 8.1.1
33 Flamingo | 2022.2.1 7.2

以下是 Android Studio Iguana 的新功能。

修補程式版本

以下是 Android Studio Iguana 和 Android Gradle 外掛程式 8.3 的修補程式版本清單。

Android Studio Iguana | 2023.2.1 修補程式 1 和 AGP 8.3.1 (2024 年 3 月)

這個次要更新版本修正了這裡所列的錯誤。

應用程式品質深入分析中的版本管控系統整合功能

應用程式品質深入分析現在可讓您從 Crashlytics 堆疊追蹤前往相關程式碼,也就是當機發生的時間點。AGP 會將 Git 修訂版本雜湊資料附加至當機報告,以便 Android Studio 導覽至您的程式碼,並顯示問題發生時的版本。在「App Quality Insights」中查看當機報告時,您可以選擇前往目前 Git 結帳頁面中的該行程式碼,或是查看目前結帳與產生當機的程式碼集版本之間的差異。

如要將版本管控系統與應用程式品質深入分析整合,必須符合下列最低需求:

如要為可進行偵錯的建構類型使用版本管控整合功能,請在模組層級建構檔案中啟用 vcsInfo 標記。如果是發布版本 (不可偵錯) 版本,系統會預設啟用標記。

Kotlin

android {
  buildTypes {
    getByName("debug") {
      vcsInfo {
        include = true
      }
    }
  }
}

Groovy

android {
  buildTypes {
    debug {
      vcsInfo {
        include true
      }
    }
  }
}

現在,當您建構應用程式並發布至 Google Play 時,當機報告中會包含 IDE 從堆疊追蹤連結至舊版應用程式所需的資料。

在「App Quality Insights」中查看 Crashlytics 當機變化版本

為協助您分析當機的根本原因,您現在可以使用應用程式品質深入分析,按照問題變化版本,或共用類似堆疊追蹤的事件群組查看事件。如要查看當機報告各變化版本的事件,請從下拉式選單中選取變化版本。如要匯總所有變數的資訊,請選取「All」(全部)

Compose UI 檢查

為協助開發人員在 Jetpack Compose 中建構更靈活且無障礙的 UI,Android Studio Iguana Canary 5 在 Compose 預覽中推出了全新的 UI 檢查模式。這項功能的運作方式與檢視畫面的視覺程式碼檢查無障礙功能檢查整合類似。啟用 Compose UI 檢查模式後,Android Studio 會自動稽核 Compose UI,並檢查在不同螢幕大小下,找出自動調整和無障礙功能的問題,例如大螢幕延展的文字,或色彩對比度過低。這個模式會醒目顯示在不同預覽設定中發現的問題,並在問題面板中列出問題。

按一下 Compose 預覽畫面上的 UI「檢查」按鈕 ,並傳送意見回饋,即可立即試用這項功能:

按一下「Compose UI Check mode」按鈕可啟用檢查。

UI 檢查模式的已知問題:

  • 問題面板中選取的問題可能會失去焦點
  • 「禁止規則」功能無法運作
已啟用 Compose UI 檢查模式,並顯示問題面板中的詳細資料。

Compose 預覽的漸進式轉譯

Android Studio Iguana Canary 3 推出了 Compose 預先發布版中的漸進式轉譯功能。一直以來,我們不斷努力提高預覽效能,但現在對於檢視畫面不支援的預覽,我們會刻意降低轉譯品質,以節省記憶體。

這項功能的開發目的,是藉由在檔案中同時處理更多預覽,進一步提升預覽的可用性。歡迎立即試用並提交意見回饋

IntelliJ IDEA 2023.2 平台更新

Android Studio Iguana 提供 IntelliJ IDEA 2023.2 更新內容,可改善 Studio IDE 使用體驗。如要進一步瞭解異動內容,請參閱 IntelliJ IDEA 2023.2 版本資訊

基準設定檔模組精靈

從 Android Studio Iguana 開始,您可以使用新模組精靈中的基準設定檔產生器範本 (「File」>「New」>「New Module」),為應用程式產生基準設定檔

這個範本會設定您的專案,以便支援基準設定檔。它使用新的基準設定檔 Gradle 外掛程式,可自動執行透過一項 Gradle 工作以指定方式設定專案的程序。

這個範本也會建立執行設定,讓您在「Select Run/Debug Configuration」下拉式清單中按一下就能產生基準設定檔。

使用 Espresso Device API 測試設定變更

當裝置遇到常見的設定變更 (例如旋轉和螢幕展開) 時,請使用 Espresso Device API 測試應用程式。Espresso Device API 可讓您在虛擬裝置上模擬這些設定變更,並同步執行測試,因此一次只會發生一項 UI 動作或斷言,測試結果也更加可靠。進一步瞭解如何使用 Espresso 編寫 UI 測試

如要使用 Espresso Device API,您需要下列項目:

  • Android Studio Iguana 以上版本
  • Android Gradle 外掛程式 8.3 以上版本
  • Android Emulator 33.1.10 以上版本
  • 搭載 API 級別 24 以上版本的 Android 虛擬裝置

設定 Espresso Device API 專案

如要設定專案,讓專案支援 Espresso Device API,請按照下列步驟操作:

  1. 如要讓測試裝置執行測試傳遞指令,請在 androidTest 來源集的資訊清單檔案中新增 INTERNETACCESS_NETWORK_STATE 權限:

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
  2. gradle.properties 檔案中啟用 enableEmulatorControl 實驗性旗標:

      android.experimental.androidTest.enableEmulatorControl=true
  3. 在模組層級的建構指令碼中啟用 emulatorControl 選項:

    Kotlin

      testOptions {
        emulatorControl {
          enable = true
        }
      }

    Groovy

      testOptions {
        emulatorControl {
          enable = true
        }
      }
  4. 在模組層級建構指令碼中,將 Espresso Device 程式庫匯入專案:

    Kotlin

      dependencies {
        androidTestImplementation("androidx.test.espresso:espresso-device:3.5.1")
      }

    Groovy

      dependencies {
        androidTestImplementation 'androidx.test.espresso:espresso-device:3.5.1'
      }

針對常見的設定變更進行測試

Espresso Device API 提供多種螢幕方向和折疊狀態,方便您模擬裝置設定變更。

針對螢幕旋轉進行測試

以下範例說明如何測試裝置螢幕旋轉時應用程式會發生什麼情況:

  1. 首先,為了讓啟動狀態保持一致,請將裝置設為直向模式:

      import androidx.test.espresso.device.action.ScreenOrientation
      import androidx.test.espresso.device.rules.ScreenOrientationRule
      ...
      @get:Rule
      val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
  2. 建立測試,在測試執行期間將裝置設為橫向:

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        ...
      }
  3. 畫面旋轉後,請檢查 UI 是否如預期調整至新的版面配置:

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist()
      }

測試螢幕展開時

以下範例說明如何測試應用程式在折疊式裝置和展開螢幕的情況下,應用程式會發生什麼情況:

  1. 首先,請呼叫 onDevice().setClosedMode(),測試處於折疊狀態的裝置。請確保應用程式的版面配置可配合精簡螢幕寬度調整:

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed()
        composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist()
        ...
      }
  2. 如要轉換為完全展開的狀態,請呼叫 onDevice().setFlatMode()。確認應用程式的版面配置是否配合展開的大小類別:

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        ...
        onDevice().setFlatMode()
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist()
      }

指定測試所需的裝置

如果您正在執行測試,會在非折疊式裝置中執行折疊動作,測試通常會失敗。如果只要執行與執行中裝置相關的測試,請使用 @RequiresDeviceMode 註解。在不支援測試設定的裝置上,測試執行器會自動略過執行中的測試。您可以將裝置規定規則新增至每個測試或整個測試類別。

舉例來說,如要指定測試只應在支援展開至平面設定的裝置上執行,請在測試中加入下列 @RequiresDeviceMode 程式碼:

@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
  ...
}