1、前言
Android Studio又更新了,每次重大更新都給我們的生產力提升了一個台階,當然也會帶來神奇的bug,牆裂提醒各位小伙伴升級請慎重!!!
【真香警告】Android Studio下載鏈接:
for Windows(64-bit) / for Linux(64-bit) / for Mac(64-bit)
這次Android Studio 4.0版本的正式上線不容易呀,疫情如此嚴重還是如約而至,希望穩定性也不差。話不多說,我們進入正題,Android Studio 4.0 新功能與優化。
2、新功能
2.1 MotionLayout與Motion Editor
本次升級新增的MotionLayout令人眼前一亮,它擴展了功能豐富的ConstraintLayout ,來幫助開發者實現應用中復雜的動畫效果。
Android Studio特地增加了Motion Editor使MotionLayoutI的使用變得更加容易,Motion Editor可以用來創建、編輯和預覽MotionLayout 動畫。
此后實現動畫不再需要創建和修改復雜的xml文件,使用Motion Editor就可以生成,而且支持編輯約束集,過渡,關鍵幀和視圖屬性。而且對於已經使用過ConstraintLayout的開發人員來說,IDE可以輕松地將其轉換為MotionLayout。如果想要查看編輯器創建的代碼的話,只需要單擊一下即可。
想要學習更多關於Motion Editor的內容,可以參考官方文檔。
2.2 Layout Validation
在Android Studio的右邊欄可以找到新增的Layout Validation選項卡,這是一個可視化的布局驗證工具,可以同時預覽不同設備和配置上的布局,從而幫助檢測布局錯誤並創建更多可訪問的應用程序。
在 Layout Validation 窗口中,可以選擇四個不同的驗證屬性:
- Pixel Devices :在多種像素設備上預覽應用。
- Custom :使用自定義顯示選項(例如屏幕方向或語言)預覽應用。
- Color Blind:使用常見色盲類型的模擬預覽應用。
- Font Sizes:使用各種字體大小預覽應用。
想要學習更多關於Layout Validation的內容,可以參考官方文檔。
2.3 Build Analyzer
Build Analyzer是Android Gradle Plugin 4.0.0新增的一個構建分析器,當將 Android Studio 4.0 與 Android Gradle 插件 4.0.0 及更高版本一起使用時,可以使用Build Analyzer工具來顯示整個項目構建過程中哪些部分耗時最高,以此可以來檢查一些過時的或錯誤的配置可能導致的構建耗時,來優化項目的構建時間。
要打開 Build Analyzer 窗口,請按照下列步驟操作:
- 如果尚未執行此操作,請通過從菜單欄中選擇 Build> Make Project 來構建應用程序。
- 從菜單欄中選擇 View > Tool Windows > Build。
- 在 Build 窗口中,以下列方式之一打開 Build Analyzer 窗口:
- Android Studio完成構建項目后,單擊 Build Analyzer 選項卡。
- Android Studio完成構建項目后,單擊 Build Output 窗口右側的鏈接。
Build Analyzer 窗口在左側的樹中組織可能的構建問題。你可以檢查並單擊每個問題,以在右側面板中調查其詳細信息。
當 Android Studio 分析構建時,它將計算確定構建持續時間的一組任務,並提供可視化幫助你了解每個任務的影響,你還可以通過展開 Warnings 節點來獲取有關警告的詳細信息。
想要學習更多關於Build Analyzer的內容,可以參考官方文檔。
2.4 依賴元數據
使用 Android Gradle 插件 4.0.0 及更高版本構建應用時,該插件包含描述已編譯到應用中的依賴項的元數據,uploading 應用程序時,Play 控制台會檢查此元數據提供以下好處:
獲取有關你的應用使用的SDK和依賴項的已知問題的警報
收到可行的反饋來解決這些問題
數據經過壓縮,通過 Google Play 簽名密鑰加密,並存儲在發布應用的簽名欄中,你也可以自己在以下目錄中的本地中間構建文件中檢查元數據:
<project>/<module>/build/outputs/sdk-dependencies/release/sdkDependency.txt。
如果不想共享此信息,可以通過在模塊 build.gradle 文件中添加以下內容來退出:
android {
dependenciesInfo {
// Disables dependency metadata when building APKs.
includeInApk = false
// Disables dependency metadata when building Android App Bundles.
includeInBundle = false
}
}
3、優化
3.1 Layout Inspector
要打開 Layout Inspector 窗口,請轉到 View > Tools Windows > Layout Inspector。除了現有布局檢查器的許多相同功能外,實時布局檢查器還包括:
- Dynamic layout hierarchy(動態布局層次結構):隨着設備視圖的更改而更新。
- Property values resolution stack:(屬性值解析堆棧):調查資源屬性值在源代碼中的起源,並通過遵循屬性窗格中的超鏈接導航到其位置。
- 3D view(3D視圖):在運行時通過高級 3D 可視化查看應用程序的視圖層次結構,要使用此功能,只需在 Layout Inspector 窗口中單擊布局並旋轉它。
想要學習更多關於Layout Inspector的內容,可以參考官方文檔。
3.2 CPU Profiler
根據用戶的反饋,谷歌將集中精力通過兩種重要方式來改善 CPU Profiler 中的用戶體驗。
首先,與以前的 Android Studio 版本相比,CPU Profiler 中 CPU 記錄的錯誤率已大大降低。
其次,對 CPU Profiler UI 進行了全面改進,以提供更直觀的工作流程,其中 UI的一些顯着更改包括:
- CPU記錄與主探查器時間軸分開了以便於分析,記錄的數據在 Profiler 窗口的左側按組分布。
- 為了更輕松地進行並排分析,用戶現在可以在線程活動時間軸中查看所有線程活動(包括方法,函數和事件)。
- Flame Chart,Top Down 和 Bottom Up 分析的選項卡現在位於右側列中,在 Threads 組中,對於系統跟蹤記錄線程會自動展開,對於其他記錄類型默認情況下會折疊起,在線程名稱上雙擊(或按Enter)以展開或折疊它們。
如屏幕截圖所示,系統跟蹤UI還包括以下改進:
- 現在事件采用了獨特的顏色,以便於區分。
- 線程按它們中的跟蹤事件數進行排序,以便 “busier” 的線程在列表中排名更高。
- 可以選擇一個或多個線程以僅在那些選定的線程的右列中查看分析。
- 同樣,可以在任何線程中選擇一個跟蹤事件以查看其分析數據。
想要學習更多關於CPU Profiler的內容,可以參考官方文檔。
3.3 混淆代碼的智能編輯器
在之前編寫混淆代碼時,大概都復制粘貼的比較多,而在AS 4.0中提供了智能編輯器功能,不但在編寫混淆代碼會有自動補全所有類,方法和字段功能,而且還有語法突出顯示,錯誤檢查和提醒等功能。
當打開 R8 的代碼收縮規則文件時,Android Studio 現在提供智能編輯器功能,例如:語法突出顯示、代碼完成和錯誤檢查。該編輯器還與 Android Studio 項目集成在一起,為所有類、方法和字段提供完整的符號補全,並包括快速導航和重構。
3.4 Kotlin Android live templates
Android Studio 現在包括適用於 Kotlin 類的Android 實時模板。例如,現在可以鍵入 toast 並按 Tab 鍵快速插入 Toast。
有關可用實時模板的完整列表,請從菜單欄中單擊 File > Settings(或在macOS上為 Android Studio > Preferences ),然后導航 Editor > Live Templates。
PS:谷歌對Kotlin的投入越來越大,如果有還沒有學Kotlin的小伙伴,建議還是去學學,有Java基礎的話上手還是很快的,平時混合開發一下,實戰中完全掌握是最快的。
3.5 Clangd support for C++
對於編寫C++語言的開發者來說,現在已經把clangd做完主要的語言分析引擎了,用來代碼導航,自動完成,錯誤檢查和提示。而且還在Android Studio中包含了clang-tidy。要配置Clangd和clang-tidy的話,可以打開Setting(或Preferences),導航到Languages & Frameworks > C/C++ > Clangd or Clang-Tidy。
3.6 Feature-on-feature dependencies
在早期版本的 Android Gradle 插件中,所有動態功能模塊都只能依賴於應用程序的基本模塊。
現在,當使用 Android Gradle 插件 4.0.0 及更高版本時,可以包括一個依賴於另一個功能模塊的功能模塊,即 :video
功能可以取決於:camera
功能,而功能取決於基礎模塊,結果如下圖所示。
動態功能 :video
取決於 :camera
的功能,后者取決於基本 :app
模塊。
這意味着,當應用程序請求下載動態功能模塊時,該應用程序還會下載其依賴的其他功能模塊,在之后創建動態功能模塊,你可以在模塊聲明一個功能上特征依賴 build.gradle 文件,例如 :video
模塊聲明對 :camera
以下項的依賴關系:
// In the build.gradle file of the ':video' module.
dependencies {
// All dynamic feature modules must declare a dependency
// on the base module.
implementation project(':app')
// Declares that this module also depends on the 'camera'
// dynamic feature module.
implementation project(':camera')
...
}
此外,你可以通過在菜單欄中單擊 Help > Edit Custom VM Options 並啟用以下功能,在 Android Studio 中啟用 feature-on-feature dependency 功能(例如,在編輯 Run configuration 時支持該功能):
-Drundebug.feature.on.feature=true