Android Studio Chipmunk 發(fā)布啦,快來看看有什么更新!
大家好,我是劉望舒,騰訊最具價值專家,著有三本業(yè)內知名暢銷書,三本書被中國國家圖書館、各大985名校圖書館收藏,連續(xù)五年蟬聯(lián)電子工業(yè)出版社年度優(yōu)秀作者。
前華為面試官、獨角獸公司技術總監(jiān)。
BAT?即可。? ??
轉自:GSYTech
?從狐貍,蜜蜂到現(xiàn)在的花栗鼠,這次雖然也是 Android Studio 的大版本更新,但是本次更新的內容不多,主要是針對 Jetpack Compose 和 profiling 的更新~ 原文鏈接 :https://developer.android.com/studio/releases?hl=en
?
針對 Jetpack Compose 的支持
動畫預覽支持
Android Studio Chipmunk 現(xiàn)在開始支持?animatedVisibility?的動畫預覽,動畫預覽和animatedVisibility?需要使用 Compose 1.1.0 或更高版本。
補充關于動畫預覽的介紹,Android Studio 允許開發(fā)者在 Animation Preview 中調試動畫,在 Animation Preview 里可以調試每個動畫值的時間、暫停、循環(huán)、快進或慢放等:

還可以使用動畫預覽來繪制可視化動畫曲線,這對于調試動畫效果非常有用:

另外 Animation Preview 還會自動檢測可以被調試的動畫,可以調試的動畫會有?「Start Animation Inspection」?的圖標 。

動畫預覽目前也開始支持?updateTransition?API,而動畫預覽與?updateTransition?一起使用,需要使用 Compose 1.0.1 或更高版本。
Library Modules 的發(fā)布預覽
該預覽允許開發(fā)者在 Android Studio 中查看對應的 UI,而無需在手機上運行的 app。
在 Android Studio Chipmunk 中,可以直接從 Library Modules 部署特定的@Preview到模擬器或者手機。
點擊?「Deploy to Device」?圖標 ,Android Studio 就會將 @Preview 部署到連接的設備或模擬器。


Profiling 新支持
在 Android 12 及更高版本上檢測卡頓
對于使用 Android 12 或者更高版本的設備,捕獲?「Janky frames」?將顯示在 CPU Profiler的?「Display」?窗格下:
啟動應用程序;
在 Android Studio 中,選擇?「View > Tool Windows > Profiler」?或點擊工具欄中的「Profile」

然后就可以在?「Select Deployment Target」?對話框選擇要需要調試的對象。
點擊「CPU」時間線中的任意位置以打開 CPU Profiler。
在Display下可以看到??「Janky frames」?軌跡,在每個 Janky frames 中,紅色部分突出顯示幀超過其渲染所需的時間。

找到一個 janky frame 后,可以同過點擊它或者按「M」來調整變焦,相關的?「RenderThread」?和?「GPU completion」. 事件將在主線程中著重顯示;

「另外還可以通過分別切換 All Frames」和?「Lifecycle」?來選擇查看所有幀或更細分的渲染時間。

補充說明
「Android 10(API 級別 29)和以下版本里,CPU Profiler 的 Display」?的單個 section 中會顯示相關的操作系統(tǒng)圖形管道信息 。

「Display」?顯示的 OS graphics pipeline 信息 有:「Frames」、「SurfaceFlinger」、「VSYNC」和「BufferQueue」。
「Frames」:主要顯示 RenderThread?跟蹤事件和 App 中的 UI 線程,超過 16 毫秒的事件會被涂成紅色以突出潛在的 janky 幀,因為它們不滿足 60 fps 的要求。「SurfaceFlinger」:顯示 SurfaceFlinger 何時處理幀緩沖區(qū),SurfaceFlinger 是一個系統(tǒng)進程,負責發(fā)送 buffers 到屏幕顯示。 「VSYNC」:顯示 VSYNC,即同步顯示 pipeline 的信號。 「BufferQueue」:這部分顯示有多少幀緩沖區(qū)在排隊等待 SurfaceFlinger。對于運行在 Android 9(API 級別 28)或更高版本的設備的應用,這里會顯示應用 surface 的 BufferQueue ( 0、1或2)的緩沖區(qū)計數(shù)。BufferQueue 可以幫助你了解圖像緩沖區(qū)在 Android 圖形組件之間移動時的狀態(tài)。例如,值?2表示應用程序當前是三重緩沖,這會導致額外的輸入延遲。
「Display」?還提供了檢測潛在的卡頓的支持——例如,當 UI 線程或RenderThread花費超過 16 毫秒時,要調查導致卡頓的細節(jié),你可以點擊??「Threads」?部分,這部分將顯示與 UI 渲染相關的線程。

「Threads」?部分顯示了 UI 線程 (?java.com.google.samples.apps.iosched) 、RenderThread?和GPU completion?線程,這些可能會導致卡頓 UI 渲染相關的線程。
在 Android 10 及以下檢測卡頓
要在 Android 10 及以下檢測卡頓:
查看 Display?中的??「Frames」?,注意紅框是主要需要調查的對象。 
一旦發(fā)現(xiàn)一個 janky frame,可以通過放大它來查看 UI 線程中相關的跟蹤事件。

Choreographer#doFrame顯示了 UI 線程何時調用?Choreographer?協(xié)調動畫、視圖布局、圖像繪制和相關進程,DrawFrames顯示?RenderThread?何時形成并向 GPU 發(fā)出繪制命令。
如果出現(xiàn)特別長的跟蹤事件,可以進一步放大并找出可能導致渲染緩慢的原因,例如當放大其中一個 inflate事件時,可以準確了解每個 UI 組件所花費的時間。

在 Android 11 及以上檢測卡頓
在 Android 11 及以上版本,可以訪問系統(tǒng)跟蹤中的幀生命周期數(shù)據(jù),Android Studio 會顯示對應的「Frame Lifecycle」

「Frame Lifecycle」?相關內容如下:
**Frame Lifecycle (Layer name) **: 圖層名稱,一個?layer就是一個獨立的 composition 單元。 「Application」: App將緩沖區(qū)移出隊列到將其重新排入隊列的時間,通常對應于? RenderThread。「Wait for GPU」:GPU 緩沖的時間。這是 buffer. 發(fā)送到 GPU, GPU 在 buffer 上的工作的時間,「但這并不表示 GPU 在此期間僅在該 buffer 上工作。」 「Composition」:顯示從 SurfaceFlinger 鎖定 buffer 并將其發(fā)送以進行合成,到 buffer 被發(fā)送到顯示器的時間。 「Frames on display」:顯示幀在屏幕上的時間長度。
**Frame Lifecycle **部分描述 幀緩沖區(qū)如何在渲染 pipeline 的不同階段之間移動,幀按幀號進行顏色編碼,以便更容易跟蹤特定幀。
Android Studio 還在 **Frames **選項中以表格格式顯示跟蹤中的所有幀。

「Frame #「、」Application」、「Wait for GPU」和?「Composition?「列表示與之前圖標里的數(shù)據(jù)是一樣的,」Frame Duration」列表示從?「Application」?開始到?「Frames on Display」?的時間,這本質上是端到端渲染幀所需的時間。
如何檢測卡頓
在 Android 11 上,除了?「Display」?部分,還可以:
按?「Application」?列對?「Frames」?表進行排序,從而更好統(tǒng)計占用時間最長的幀

選擇表格中費時最長的幀,就會放大左側時間線視圖中的選定幀。

「在Frame Lifecycle」和「Threads」?中查找相關線程。

最后
從這個版本更新內容看,本次雖然是大版本更新,但是 IEAD 版本不變,更新的內容也不多,所以大家應該可以放心更新,如果有什么問題,歡迎留言評論。

? 耗時2年,Android進階三部曲第三部《Android進階指北》出版!
為了防止失聯(lián),歡迎關注我的小號
??微信改了推送機制,真愛請星標本公號??
