Android Studio Iguana | 2023.2.1 (2024 年 2 月)

以下是 Android Studio Iguana 的新功能。

修補程式版本

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

Android Studio Iguana | 2023.2.1 修補程式 2 和 AGP 8.3.2 (2024 年 4 月)

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

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

這項次要更新修正了這些錯誤

IntelliJ IDEA 2023.2 平台更新

Android Studio Iguana 包含 IntelliJ IDEA 2023.2 更新,可提升 Studio IDE 使用體驗。如要進一步瞭解相關異動,請參閱 IntelliJ IDEA 2023.2 版本資訊

App Quality Insights 的版本管控系統整合功能

應用程式品質深入分析資料現在可讓您在發生當機時,從 Crashlytics 堆疊追蹤導覽至相關程式碼。AGP 會將 Git 提交雜湊資料附加至當機報告,協助 Android Studio 前往您的程式碼,並顯示該程式碼在發生問題的版本中的狀態。在應用程式品質深入分析中查看當機報告時,您可以選擇前往目前 Git 檢出的程式碼行,或是查看目前檢出的程式碼與產生當機的程式碼庫版本之間的差異。

如要將版本控制系統與 App Quality Insights 整合,您必須符合下列最低規定:

如要針對可偵錯的建構類型使用版本控制整合功能,請在模組層級建構檔案中啟用 vcsInfo 標記。對於發布 (非偵錯) 版本,系統預設會啟用標記。

Kotlin

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

Groovy

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

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

在「App Quality Insights」中查看 Crashlytics 異常終止變化版本

為協助您分析當機的根本原因,您現在可以使用 App Quality Insights 依據問題變化版本或共用類似堆疊追蹤記錄的事件群組,查看事件。如要查看當機報表的各個變化版本中的事件,請從下拉式選單中選取變化版本。如要匯總所有變數的資訊,請選取「全部」

Compose UI 檢查

為協助開發人員在 Jetpack Compose 中建構更可自動調整且更易於使用的 UI,Android Studio Iguana Canary 5 在 Compose 預覽中推出了全新的 UI 檢查模式。這項功能的運作方式與視覺 linting 和檢視畫面的無障礙檢查整合類似。啟用 Compose UI 檢查模式後,Android Studio 會自動檢查 Compose UI,並檢查不同螢幕大小的自動調整和無障礙問題,例如在大型螢幕上拉伸的文字或低色彩對比。這個模式會在不同預覽設定中找出問題,並在「問題」面板中列出這些問題。

歡迎立即試用這項功能,方法是按一下 Compose 預覽中的 UI 檢查按鈕 ,然後提供意見回饋

按一下「Compose UI Check」模式按鈕,啟用檢查功能。

UI 檢查模式的已知問題:

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

Compose 預覽的漸進式算繪

Android Studio Iguana Canary 3 在 Compose 預覽中推出漸進式算繪功能。為了讓預覽效能持續提升,現在對於任何在檢視畫面外的預覽畫面,我們會刻意降低轉譯品質,以節省記憶體用量。

開發這項功能的目的,是想在單一檔案中同時處理更多預覽,進一步改善預覽的可用性。歡迎立即試用,並提供意見

基準設定檔模組精靈

自 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.6.1")
      }

    Groovy

      dependencies {
        androidTestImplementation 'androidx.test.espresso:espresso-device:3.6.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() {
  ...
}