以下是 Android Studio Bumblebee 的新功能。
支援 KMP 測試執行
您可以透過 Android Studio Bumblebee,針對 Kotlin Multiplatform (KMP) 專案執行測試。
為確保能夠順利透過 Android Studio 執行測試,您使用的各個程式必須符合下列需求條件:
- AGP 7.0.0-alpha08 以上版本
- Gradle 6.8.2 以上版本
- Kotlin 外掛程式 1.4.30 以上版本
全新的裝置管理工具
裝置管理工具是 AVD Manager 的替代工具,兩者皆可透過 Android Studio 的歡迎畫面或在開啟專案後存取。裝置管理工具提供幾項新功能,讓您可更輕鬆地建立及管理所有本機測試裝置,例如:
- 彈性靈活的 UI:如同其他 Android Studio 工具視窗,您可以將裝置管理工具固定在 IDE 中、以浮動方式顯示,或是顯示為獨立視窗。這樣您就能輕鬆存取裝置,而不會擋到 IDE 中的其他視窗。
- 「Virtual」分頁:您可以透過這個分頁建立、管理及部署虛擬裝置;快速一覽各個裝置的詳細資料;而且只要在 Device File Explorer 中按一下就能迅速檢查裝置。
- 「Physical」分頁:您可以透過這個分頁,使用 ADB Wifi 快速配對至新裝置,並快速一覽各個實體裝置的詳細資料。此外,只要在 Device File Explorer 中按一下相關按鈕,就能迅速檢查各個裝置的檔案系統。
如要開啟全新的裝置管理工具,請使用下列其中一種方法:
- 在 Android Studio 歡迎畫面中,依序選取「More Actions」>「Virtual Device Manager」。
- 開啟專案後,在主選單列中依序選取「View」>「Tool Windows」>「Device Manager」。
版面配置檢查器的新功能
擷取版面配置階層快照
您現在可以透過版面配置檢查器,儲存執行中應用程式的版面配置階層快照,以便與他人分享或日後供參考。
快照會擷取一般在使用版面配置檢查器時會看到的資料,包括詳細的版面配置 3D 轉譯內容、檢視/Compose/混合型版面配置的元件樹狀結構,以及各個 UI 元件的詳細屬性。如要儲存快照,請按照下列步驟操作:
- 將應用程式部署至搭載 API 級別 23 以上版本的裝置。
- 依序選取「View」>「Tool Windows」>「Layout Inspector」,開啟版面配置檢查器。
- 版面配置檢查器應該會自動連結至應用程式程序。如未自動連結,請從下拉式選單中選取應用程式程序。
- 如要擷取快照,請按一下版面配置檢查器工具列中的「Export snapshot」圖示 。
- 在隨即顯示的系統對話方塊中,指定快照的名稱和儲存位置。請務必使用
*.li
副檔名儲存檔案。
接著只要在主選單列中依序選取「File」>「Open」並開啟*.li
檔案,即可載入版面配置檢查器快照。
支援檢查 Compose 語意
在 Compose 中,語意會以無障礙服務和測試架構能夠理解的替代方式描述 UI。在 Android Studio Bumblebee 中,您現在可以使用版面配置檢查器來檢查 Compose 版面配置中的語意資訊。
選取某個 Compose 節點後,請使用「Attributes」視窗檢查該節點是直接宣告語意資訊、合併其子項的語意,還是同時採用這兩種做法。如要快速找出包含語意 (無論是直接宣告或合併而來) 的節點,請在「Component Tree」視窗的「View options」下拉式選單中,選取「Highlight Semantics Layers」。選取這個選項後,系統只會醒目顯示樹狀結構中包含語意的節點,且您可以使用鍵盤快速瀏覽各個節點。
避免活動重新啟動
將版面配置檢查器連結至透過舊版 Android Studio 執行的應用程式後,應用程式會重新啟動。系統必須設定裝置標記,才能檢查應用程式的版面配置。
在 Android Studio Bumblebee 中,您可以採取下列其中一種做法事先設定這個標記,避免活動在連結版面配置檢查器時重新啟動:
啟用執行設定選項
- 在主選單列中依序選取「Run」>「Edit Configurations」。畫面上隨即會顯示「Run/Debug Configurations」對話方塊。
- 前往您要使用的執行設定。
- 在「Layout Inspector options」部分中,勾選「Connect to Layout Inspector without restarting activity」旁邊的方塊。
- 下次想要透過版面配置檢查器檢查應用程式時,使用該執行設定即可。
透過指令列設定標記:
- 在與裝置連結的機器上開啟終端機視窗
- 使用以下指令設定應用程式的裝置標記:
adb shell settings put global debug_view_attributes_application_package <my_package_name>
- 將應用程式部署至裝置,並連結版面配置檢查器。Android Studio 會檢查是否已設定標記,並盡可能避免重新啟動活動。
文件版面配置檢查器快照
您現在可以擷取應用程式版面配置階層的快照,以便儲存、分享或日後檢查。快照會擷取一般在使用版面配置檢查器時會看到的資料,包括詳細的版面配置 3D 轉譯內容、檢視/Compose/混合型版面配置的元件樹狀結構,以及各個 UI 元件的詳細屬性。如要擷取快照,請在檢查執行中應用程式的版面配置時,按一下版面配置檢查器工具列中的「Export snapshot」圖示 ,然後使用*.li
副檔名儲存快照。接著只要在主選單列中依序選取「File」>「Open」並開啟 *.li
檔案,即可載入版面配置檢查器快照。快照會顯示在「Editor」視窗的分頁中,方便您與執行中的應用程式進行比較。
「App Inspection」視窗中的新功能
Android Studio Bumblebee 的「App Inspection」視窗提供新的工具和功能。您可以在主選單列中依序選取「View」>「Tools Windows」>「App Inspection」,開啟「App Inspector」。
網路檢查器
「Profilers」工具視窗中的網路分析器現已移至「App Inspection」工具視窗。如果先前使用過網路分析器,您仍可繼續享有這項工具原有的各項實用功能和豐富的網路流量資料。只要將應用程式部署至搭載 API 級別 26 以上版本的裝置,然後依序選取「App Inspector」>「Network Inspector」分頁標籤即可。
檢查工作、鬧鐘和 Wakelocks
現在除了檢查工作站以外,您還可透過「Background Task Inspector」檢查應用程式的工作、鬧鐘和 Wakelocks。各類型的非同步工作現在會顯示在檢查器分頁的對應標題底下,方便您監控工作的狀態和進度。與工作站類似,您可以在「Task Details」面板中選取工作、鬧鐘或 Wakelock,藉此檢查其詳細資訊。
由於工作站實際上會使用工作和 Wakelocks,因此由工作站安排執行的工作會顯示為各個工作站的子項。請注意,只有在圖表模式下才能看到工作站。
分析器的新功能
在 Android Studio Bumblebee 中,我們推出了一些新功能,能讓您深入瞭解應用程式如何使用資源。如要分析應用程式,請在主選單列中依序選取「View」>「Tool Windows」>「Profiler」。
Jank 偵測歷程
在使用搭載 Android 11 (API 級別 30) 以上版本的裝置分析應用程式時,CPU 分析器現在會顯示一組新的歷程,用來說明「Frame Lifecycle」下方各頁框的不同階段:「Application」、「Wait for GPU」、「Composition」和「Frames on display」。每個歷程都會以頁框編號為頁框加上標籤,並為矩形加上色碼,方便您看到特定頁框在其生命週期中的位置,並提供如何切換為與 Vsync 事件比較的指引。您可以使用這項資料來瞭解您的應用程式中可能出現資源浪費的位置,並調查根本原因。在「Analysis」面板中,現在會提供「Frames」分頁標籤,便於提供所有頁框的轉譯資訊摘要。詳情請參閱「UI 資源浪費偵測」。
支援對可分析應用程式進行分析
在分析應用程式時,請務必使用最接近於使用者將要安裝的應用程式的版本,來產生準確的資料。如要這麼做,您現在可以在應用程式資訊清單中加入<profileable>
屬性,以對無法進行偵錯的應用程式進行分析,如以下代碼所示。
<profileable android:shell="true"/>
「Profileable」是在 Android 10 中引入的一項資訊清單設定,可用於執行 CPU 和記憶體分析工作。使用可分析的標記 (而非可偵錯的標記) 的主要優勢是,在進行效能評估時可以降低負載水平;不過,某些分析功能不適用於可分析的版本,例如事件時間軸、API 啟動的 CPU 分析、記憶體快照資料或即時位置記錄。詳情請參閱「可分析的應用程式」。
收合呼叫堆疊頁框
您現在可以在檢查「Profilers」工具視窗中的「Callstack Sample Recording」時,收合與調查無關的頁框。呼叫有助於瞭解程式碼的哪些部分已執行,以及叫用的原因。不過,Java/Kotlin 程式的呼叫堆疊通常不只包含 Java/Kotlin 程式碼,還包含可能造成干擾的原生程式碼頁框。如要進一步瞭解如何修正呼叫堆疊檢視畫面,請參閱「檢查呼叫堆疊頁框」。
無線偵錯
Android Studio Bumblebee 支援搭載 Android 11 以上版本裝置的無線偵錯功能。您可以透過 Wi-Fi 從 Android Studio 配對及部署應用程式,而不必使用 USB 傳輸線,也不必使用指令列管理 Android Debug Bridge (adb) 連線。如要使用這項功能,請在裝置選取選單中選取「Pair devices using Wi-Fi」選項,然後選擇 QR 圖碼或配對 PIN 碼。接著,在搭載 Android 11 以上版本裝置的「開發人員選項」下方,找到「無線偵錯」畫面,然後以無線方式初始化及連線至 Android Studio 的 adb 工作階段。如要進一步瞭解無線偵錯設定,請參閱「透過 Wi-Fi 連線至裝置 (Android 11 以上版本)」。
預設啟用 Compose 互動式預覽
從 Android Studio Bumblebee 開始,系統預設會啟用互動式預覽功能。這項功能可讓您像在真實裝置上與預覽進行互動一樣。互動式預覽位在沙箱環境中,與其他預覽保持隔離,且您可以在預覽中點選各個元素及輸入使用者輸入內容。這個做法可讓您快速測試可組合元件的各個狀態和手勢,例如核取方塊的已勾選或未勾選狀態。
預覽互動模式會直接在 Android Studio 中執行,無需執行模擬器。這會造成以下限制:
- 無法連上網路。
- 無法存取檔案。
- 可能無法充分使用某些 Context API。
向量可繪項目 (AVD) 動畫預覽
「向量可繪項目動畫」工具可讓您預覽可繪製資源動畫。您可以透過這項工具,在 Android Studio 中預覽<animation-list>
、<animated-vector>
和<animated-selector>
資源,以便輕鬆修正自訂動畫。
預設啟用非遞移 R 類別
系統現在預設會啟用非遞移 R 類別。您可以將非遞移 R 類別與 Android Gradle 外掛程式搭配使用,加速建構包含多個模組的應用程式版本。這可確保每個模組的 R 類別只包含其本身資源的參照,而不必提取其依附元件的參照,避免資源重複的情形,進而建構出較新的版本,同時還可避免編譯並享有對應好處。
如需使用這項功能的相關協助,您可以依序前往「Refactor」>「Migrate to Non-Transitive R Classes...」。
Apple Silicon 支援更新
自去年起,Android Studio Arctic Fox 和 Android Emulator 都已開始支援在 Apple Silicon (arm64) 硬體上使用 macOS 的這個新架構。不過在這個版本中,我們更新了 Android SDK 平台工具 v32.0.0 版 (包括 adb 和 fastboot) 和建構工具 v32.1.0 版 (包括 aapt) 以採用通用二進位檔,讓您的 Android 開發人員工具不再需要執行 Rosetta 二進位檔轉譯器。請參閱SDK 平台工具版本資訊。
適用於設計工具的新版裝置挑選器
為了簡化針對各種 Android 裝置設計應用程式的流程,我們更新了多個設計工具視窗 (例如版面配置編輯器和版面配置驗證) 中的裝置挑選器,加入可反映各裝置板型規格常見大小的參考裝置。無論是手機、平板電腦、Wear 裝置或 Android TV,您都能透過現實世界中熱門裝置最常採用的螢幕大小來預覽、驗證或編輯版面配置。
Android 測試
Android Studio Bumblebee 和 AGP 7.1 版推出多項新功能和改善項目,可協助您更穩定地執行自動化檢測設備測試、視需要擴大測試規模,並查看可用於偵錯的實用結果。
統一的 Gradle 測試執行器
Android Gradle 外掛程式 7.1.0 版和 Android Studio Bumblebee 以上版本會使用 Gradle 本身的 Android 設備測試執行器來執行設備測試。無論您是透過指令列使用 AGP 執行測試 (例如在持續整合伺服器上),或是透過 Android Studio 進行測試,只要使用相同的測試執行器,都有可能獲得一致的結果。
先前的 Android Studio 版本是使用 IntelliJ Android 檢測設備測試執行器,而非 Gradle 的 Android 檢測設備測試執行器。因此,如果您並非使用最新版 Android Studio,則視您是透過 Android Studio 或使用 Gradle 外掛程式的指令列執行測試而定,測試結果可能會有所不同,例如使用某個執行器時通過測試,但使用另一個執行器時未通過測試。
如果您已將檢測設備測試設定儲存至專案,系統會在已連結的裝置上使用 Gradle 執行測試。您可以使用測試類別或方法旁邊的溝槽操作,建立新的檢測設備測試設定。
執行檢測設備測試時,您可以在 Gradle 工作輸出的測試矩陣中檢查測試輸出結果,確認 Android Studio 有使用 Gradle 測試執行器。雖然我們不斷隨著各個 Android Studio 版本改善這項功能,但目前仍有一些已知問題。如果您遇到問題,請回報錯誤。您也可以停用新的測試管道,以便恢復舊的行為模式。
Android Emulator 現在預設會直接在 Android Studio 中執行
Android Emulator 預設會直接在 Android Studio 中執行。這可讓您節省螢幕空間、使用快速鍵在模擬器和編輯器視窗之間快速瀏覽,以及將 IDE 和模擬器工作流程彙整到單一應用程式視窗。
當模擬器執行時,您可以存取常用的模擬器動作 (例如旋轉) 和更進一步的控制選項 (例如瀏覽播放)。如要在另一個視窗中執行模擬器,請依序前往「File」>「Settings」>「Tools」>「Emulator」。如果使用 macOS,則依序前往「Android Studio」>「Preferences」>「Tools」>「Emulator」。接著取消選取「Launch in a tool window」。
停用新的測試管道
根據預設,Android Studio Bumblebee 會使用 Gradle 執行檢測設備測試。如果您遇到問題,可以按照下列步驟停用這項行為:
- 依序選取「File」>「Settings」>「Build, Execution, Deploument」>「Testing」。(如果使用 macOS,則依序選取「Android Studio」>「Preferences」>「Build, Execution, Deployment」>「Testing」。
- 取消勾選「Run Android instrumented tests using Gradle」旁邊的方塊,然後按一下「OK」。
您也可以採用下列其中一種方法還原至舊行為:
- 透過指令列執行 Gradle 工作時,使用以下指令列參數:
-Pandroid.experimental.androidTest.useUnifiedTestPlatform=false
- 在專案的
gradle.properties
檔案中新增以下參數:android.experimental.androidTest.useUnifiedTestPlatform=false
為了協助解決您可能遇到的問題,請回報錯誤。
修補程式版本
以下是 Android Studio Bumblebee 中的修補程式版本。
Android Studio Bumblebee | 2021.1.1 修補程式 3 (2022 年 4 月)
這項次要更新修正了下列錯誤:
- Android Gradle 外掛程式
- R8 回報的類別重複問題
- 建構變化版本
- 如果透過新的 onVariants API 設定變化版本的版本名稱,會導致
versionNameSuffix
無法正常運作
- 如果透過新的 onVariants API 設定變化版本的版本名稱,會導致
- Compose 預先發布版
- 修正了效能和穩定性相關錯誤
- 解決了使用常值即時編輯功能時偶爾發生凍結的問題
- 匯入/同步處理
- 「需要同步 Gradle」訊息含有多餘的 AGP 版本
- 重新編譯 Foo.java/kt 導致清理得太多,並且不會重新編譯正確的元件
- 專案架構
- 變更目標版本時實現 AGP 升級助理穩定性的改善
- 現在,AGP 升級助理會告知使用者 Gradle 外掛程式正在更新
- 網路檢查器
- 新的網路檢查器在 Bumblebee 更新後出現當機情形
- 偵錯工具與最新版 Android Studio 連線時,我持續收到這則錯誤訊息
TrackedHttpURLConnection.getHeaderField
當機並出現NullPointerException
詳情請參閱Android Studio Bumblebee 修補程式 3 網誌文章。
Android Studio Bumblebee | 2021.1.1 修補程式 2 (2022 年 2 月)
這項更新修正了下列錯誤:
- C++ 建構
ModelCache.safeGet(androidProjectResult.androidProject::getNdkVersion, "")
不得為空值
- 程式碼編輯器
- Android Studio 即時範本中的錯誤:
className()
運算式無法解析類別名稱
- Android Studio 即時範本中的錯誤:
- D8/R8
java.lang.NoSuchMethodError
:沒有靜態方法$jacocoInit
- 因 Mockito 錯誤導致 Android 測試涵蓋範圍有缺漏
- 需要解決方法來處理 API 31 中 CAS 實作錯誤的情況
- 不支援密封類別
- 在 Chrome 中啟用水平類別合併時出現
NullPointerException
- 虛擬方法合併後出現
AbstractMethodError
- 因 init-class out-type 有誤導致無法驗證堆疊框架
- Dex 輸入使用未定義的暫存器
StringBuilderOptimizerAnalysisTest
無法在分支版本上執行- R8 中的非確定性問題
- 部署
- 執行裝置擁有者應用程式專案失敗,並顯示
Couldn't terminate the existing process for
錯誤訊息
- 執行裝置擁有者應用程式專案失敗,並顯示
- 設計工具
- 啟用非遞移 R 類別時,Compose 預覽找不到其他模組的資源
- Studio 在建構時會卡住。
- 內嵌模擬器
- 提升效能和穩定性。
- 匯入/同步處理
- 啟動 Bumblebee 時發生 IDE 錯誤:
IdeBuildTasksAndOutputInformationImp
中的輸出類型 APK 無法使用輸出清單建構檔案
- 啟動 Bumblebee 時發生 IDE 錯誤:
- IntelliJ
- 透過 Mac OS X Monterey Dock 啟動時未提供 Env 變數
- Jetpack (androidx) > 導覽
- 升級 SafeArgs,以最新的穩定版 AGP 為基礎
- 工具視窗
- 無法執行 Android 裝置管理工具
- BumbleBee 中的網路檢查器無法以可讀取的格式顯示 API 回應
詳情請參閱 Android Studio Bumblebee 修補程式 2 網誌文章。
Android Studio Bumblebee | 2021.1.1 修補程式 1 (2022 年 2 月)
這項次要更新修正了下列錯誤:
- 模擬器
- 升級至 Bumblebee (Mac M1) 後無法連線至內嵌模擬器
- IntelliJ
- 透過 Mac OS X Monterey Dock 啟動時未提供 Env 變數