前言
Android Studio 4.0(2020年5月) 更新啦,此版本包含了各種新功能和改進,還有一些廢棄配置。
重要提示:更新後,需要重新啓動 Android Studio 才能應用從早期版本的 IDE 遷移的所有內存設置。有關更多信息,請參見 已知問題 頁面。
一、Android Gradle 插件 4.0.0
最新版本的 Android Gradle 插件包含許多更新,例如 Java 8 對較舊版本的 Android 功能上的依賴項進行了更新。要了解更多信息可閱讀【完整的Android Gradle插件發行說明】(https://android.devsite.corp.google.com/studio/releases/gradle-plugin#4-0-0)。
此外,Android Studio 的新功能可幫助您提高構建性能。
1、構建分析器
當將 Android Studio 4.0 與 Android Gradle 插件 4.0.0 及更高版本一起使用時,Build Analyzer 窗口可幫助你瞭解和診斷構建過程中的問題,例如禁用的優化和配置不正確的 task,要打開 Build Analyzer 窗口,請按照下列步驟操作:
-
1、如果尚未執行此操作,請通過從菜單欄中選擇 Build> Make Project 來構建應用程序。
-
2、從菜單欄中選擇 View > Tool Windows > Build。
-
3、在 Build 窗口中,以下列方式之一打開 Build Analyzer 窗口:
-
Android Studio完成構建項目後,單擊 Build Analyzer 選項卡。
-
Android Studio完成構建項目後,單擊 Build Output 窗口右側的鏈接。
Build Analyzer 窗口在左側的樹中組織可能的構建問題。你可以檢查並單擊每個問題,以在右側面板中調查其詳細信息。
當 Android Studio 分析構建時,它將計算確定構建持續時間的一組任務,並提供可視化幫助你瞭解每個任務的影響,你還可以通過展開 Warnings 節點來獲取有關警告的詳細信息。
檢查確定構建持續時間的任務。
2、Java 8庫在D8和R8中逐漸消失
Android Studio 現在支持使用多種 Java 8 語 言API,而無需給應用程序設置最低 API 級別。
通過一個稱爲 desugaring 的過程,Android Studio 3.0 及更高版本中的 DEX 編譯器 D8 已經爲Java 8 語言功能(例如lambda表達式,默認接口方法,嘗試資源等)提供了實質性支持。
在Android Studio 4.0中,已將 desugaring engine 擴展爲能夠對 Java 語言 API 的語法糖。這意味着你現在可以在 java.util.streams
支持較舊版本的 Android 的應用程序中,包含僅在最新的Android版本中可用的標準語言API 。
此版本支持以下一組API:
-
Sequential streams (
java.util.stream1
) -
A subset of
java.time
-
java.util.function
-
Recent additions to
java.util.{Map,Collection,Comparator}
-
Optionals(
java.util.Optional
,java.util.OptionalInt
and some other new classes useful with the above APIs -
Some additions to
java.util.concurrent.atomic
(new methods onAtomicInteger
,AtomicLong
and AtomicReference) -
ConcurrentHashMap
(with bug fixes for Android 5.0)
爲了支持這些語言API,D8 會編譯一個單獨的庫DEX文件,該文件包含了一些本身缺少API的實現,並將其包含在您的應用程序中,而 desugaring 的過程 將重寫您的應用程序代碼,以在運行時使用此庫。
要啓用對這些語言API的支持,請在模塊build.gradle文件中包括以下內容:
android {
defaultConfig {
// Required when setting minSdkVersion to 20 or lower
multiDexEnabled true
}
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.4'
}
3、功能上的依存關係
在早期版本的 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
更多可見:【譯】Android Gradle 插件 4.0.0 中 Feature-on-Feature 的依賴關係
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
}
}
二、支持 Kotlin DSL 腳本文件
Android Gradle 插件現在支持 Kotlin DSL 構建腳本文件(*.kts),配合 Android Studio 結合使用時,某些 IDE 功能(例如 Project Structure 對話框和構建腳本快速修復程序)現在還支持讀寫 Kotlin 構建腳本文件。
三、 CPU Profiler 升級
根據用戶的反饋,谷歌將集中精力通過兩種重要方式來改善 CPU Profiler 中的用戶體驗。
首先,與以前的 Android Studio 版本相比,CPU Profiler 中 CPU 記錄的錯誤率已大大降低。
其次,對 CPU Profiler UI 進行了全面改進,以提供更直觀的工作流程,其中 UI的一些顯着更改包括:
-
CPU記錄與主探查器時間軸分開了以便於分析,記錄的數據在 Profiler 窗口的左側按組分佈。用戶可以通過單擊探查器中的選項圖標
在窗口右上角的選項圖標圖標或通過拖放組中的單個項目來上下移動組以重新組織列表 。
-
爲了更輕鬆地進行並排分析,用戶現在可以在線程活動時間軸中查看所有線程活動(包括方法,函數和事件)。有幾種方法可以瀏覽時間軸:
-
要關注特定的時間點,請在 CPU 使用率圖表的左上方拖動一個範圍。
-
要放大或縮小,請在按住 Control(或MacOS上的Command)的同時使用鼠標滾輪;要向左或向右平移,請在按住空格鍵的同時拖動。
-
或者使用W和A鍵進行精細的放大和縮小,使用S和D鍵進行左右的精細平移。
-
Flame Chart,Top Down 和 Bottom Up 分析的選項卡現在位於右側列中,在 Threads 組中,對於系統跟蹤記錄線程會自動展開,對於其他記錄類型默認情況下會摺疊起,在線程名稱上雙擊(或按Enter)以展開或摺疊它們。
-
如屏幕截圖所示,系統跟蹤UI還包括以下改進:
-
現在事件採用了獨特的顏色,以便於區分。
-
線程按它們中的跟蹤事件數進行排序,以便 “busier” 的線程在列表中排名更高。
-
可以選擇一個或多個線程以僅在那些選定的線程的右列中查看分析。
-
同樣,可以在任何線程中選擇一個跟蹤事件以查看其分析數據。
四、設計工具
此版本的 Android Studio 包括對設計工具的更新,例如 Layout Inspector (佈局檢查器)和全新的 Motion Editor 。
1、新動作編輯器
Android Studio 現在包括用於 MotionLayout 佈局類型的可視設計編輯器,使創建和預覽動畫更加容易。
動作編輯器提供了一個簡單的界面,用於處理 MotionLayout
庫中的元素,這些元素是 Android 應用中動畫的基礎。
在以前的版本中,創建和更改這些元素需要手動編輯XML資源文件中的約束。現在,運動編輯器可以爲您生成此XML,並支持開始和結束狀態,關鍵幀,過渡和時間軸。
要了解有關如何使用運動編輯器的更多信息,請參見用戶指南。
⚠️注意:在使用 Motion 編輯器之前,請確保將文件中的 ConstraintLayout 依賴項設置 build.gradle 爲 version 2.0.0-beta3 或更高版本。
2、Live Layout Inspector
使用 Live Layout Inspector 調試版式,在將應用程序部署到設備時可提供對應用程序UI完整地實時更新。
要打開 Layout Inspector 窗口,請轉到 View > Tools Windows > Layout Inspector。除了現有佈局檢查器的許多相同功能外,實時佈局檢查器還包括:
-
Dynamic layout hierarchy(動態佈局層次結構):隨着設備視圖的更改而更新。
-
Property values resolution stack:(屬性值解析堆棧):調查資源屬性值在源代碼中的起源,並通過遵循屬性窗格中的超鏈接導航到其位置。
-
3D view(3D視圖):在運行時通過高級 3D 可視化查看應用程序的視圖層次結構,要使用此功能,只需在 Layout Inspector 窗口中單擊佈局並旋轉它。
僅當將應用程序部署到運行 API級別 29 或更高版本的設備或仿真器時,才能使用 Live Layout Inspector,要啓用實時佈局檢查器,請轉到File > Settings > Experimental,然後選中 Enable Live Layout Inspector 旁邊的框 ,然後,單擊 Live updates 上方 Layout Display 旁邊的複選框。
3、佈局驗證
Layout Validation (佈局驗證)是一種可視化工具,可用於同時預覽不同設備和配置上的佈局,從而幫助檢測佈局錯誤並創建更多可訪問的應用程序。
用戶可以通過單擊IDE窗口右上角的 Layout Validation 選項卡來訪問此功能:
在 Layout Validation 窗口中,可以從四個不同的配置集中選擇:
-
Pixel Devices :在多種像素設備上預覽應用。
-
Custom :使用自定義顯示選項(例如屏幕方向或語言)預覽應用。
-
Color Blind:使用常見色盲類型的模擬預覽應用。
-
Font Sizes:使用各種字體大小預覽應用。
要了解有關使用佈局驗證的更多信息,請參閱使用Layout Inspector調試佈局。
五、用於代碼收縮規則的智能編輯器功能
當打開 R8 的代碼收縮規則文件時,Android Studio 現在提供智能編輯器功能,例如:語法突出顯示、代碼完成和錯誤檢查。該編輯器還與 Android Studio 項目集成在一起,爲所有類、方法和字段提供完整的符號補全,幷包括快速導航和重構。
六、Kotlin Android實時模板
Android Studio 現在包括適用於 Kotlin 類的Android 實時模板。例如,現在可以鍵入 toast 並按 Tab 鍵快速插入 Toast。
有關可用實時模板的完整列表,請從菜單欄中單擊 File > Settings(或在macOS上爲 Android Studio > Preferences ),然後導航 Editor > Live Templates。
七、Fragment wizard and new fragment templates
現在,當您導航到File > New > Fragment > Gallery或在“導航”編輯器中單擊Create new destination時,即可使用“New Android Fragment wizard”嚮導和新的片段模板。
八、在 Android 模擬器中擴展了相機支持
使用Android 11圖像時,Android Emulator相機包括以下新功能:
-
RAW拍攝
-
YUV後處理
-
Level 3 devices
-
邏輯相機支持
要了解有關爲下一版Android開發的更多信息,請轉到 Android 11 Developer Preview用戶文檔。
九、clangd 現在可用於 C ++代碼編輯器
Jetbrains CLion 是支持 Android Studio C ++ 語言支持的技術,現在使用基於 LLVM clangd 和 clang-tidy 的檢查引擎,加快了 C / C ++ 代碼的完成速度,並提供了與 clang-tidy 的更無縫集成。
現在,在 Android Studio C++ 代碼編輯器中可用,clangd 和 clang-tidy 都是開源LLVM額外工具的一部分:
-
clangd具有代碼完成功能,在編輯器中編譯錯誤消息以及定位導航。
-
clang-tidy是C ++ linter工具,具有可擴展的框架,用於診斷和修復典型的編程錯誤。
在以前的版本中,Android Studio 用戶可以通過 NDK 使用 clang-tidy;有了這一更改,Android Studio 不再依賴NDK的整潔功能。
十、已棄用 local.properties 文件中的ndk.dir設置
ndk.dir 不應再在應用程序的 local.properties 文件中 ndk.dir 設置,並且在以後的版本中將刪除對此設置的支持。Android Gradle 插件默認設置NDK版本,但是如果您需要NDK的特定版本,則可以 android.ndkVersion 在中設置 build.gradle 。
有關設置NDK的更多信息,請參閱安裝和配置NDK和CMake。
十一、IntelliJ IDEA 2019.3.3
核心 Android Studio IDE 已更新,並通過IntelliJ IDEA 進行了改進,直至 2019.3.3 版本。