第二個 Android 11 開發者預覽版現已推出,快來測試并分享您的反饋吧

Android Studio 版本說明

Android Studio 是開發 Android 應用的官方 IDE,包含構建 Android 應用所需的所有功能。

要獲取最新版本,請依次點擊 Help > Check for updates(在 macOS 上,依次點擊 Android Studio > Check for updates)。

您也可以在此處下載 Android Studio

如果您在 Android Studio 中遇到問題,請查看已知問題問題排查頁面。

要了解與其發布版本有關的最新資訊(包括每個預覽版中的重要修正的列表),請參閱版本更新

要了解 Android Plugin for Gradle 的新變化,請參閱其版本說明

3.5(2019 年 8 月)

Android Studio 3.5 是一個重大版本,同時也是 Project Marble 的項目成果。從 Android Studio 3.3 版本開始,Project Marble 項目涵蓋了多個版本,著力改進 Android Studio 的三個主要方面:系統運行狀況功能完善以及錯誤修復。

要詳細了解這些更新以及其他 Project Marble 更新,請參閱 Android 開發者博文或以下幾個部分。

另外,我們還要感謝所有為此版本提供過幫助的社區貢獻者

3.5.3(2019 年 12 月)

本次要更新修正了多個問題并進行了多項性能改進。

3.5.2(2019 年 11 月)

本次要更新修正了多個問題并進行了多項性能改進。要查看重要問題修復列表,請閱讀版本更新博客上的相關博文。

3.5.1(2019 年 10 月)

本次要更新修正了多個問題并進行了多項性能改進。要查看重要問題修復列表,請閱讀版本更新博客上的相關博文。

Project Marble:系統運行狀況

本部分將介紹 Android Studio 3.5 中旨在改善系統運行狀況的更改。

推薦內存設置

現在,如果 Android Studio 檢測到您可以通過增加操作系統應該為 Android Studio 進程(例如核心 IDE、Gradle 守護進程和 Kotlin 守護進程)分配的 RAM 上限來提高性能,它會通知您。您可以通過點擊通知中的操作鏈接來接受推薦設置,或者,您可以通過以下方式手動調整這些設置:依次選擇 File > Settings(或者,在 macOS 上依次選擇 Android Studio > Preferences),然后在 Appearance & Behavior > System Settings 下找到 Memory Settings 部分。要了解詳情,請參閱最大堆大小

有關推薦內存設置的通知。

有關推薦內存設置的通知。

內存使用情況報告

Android Studio 中的內存問題有時難以重現和報告。為了解決此問題,您可以在 Android Studio 中從菜單欄依次點擊 Help > Analyze Memory Usage,生成內存使用情況報告。執行此操作后,Android Studio 會在本地清理掉數據中的個人信息,然后詢問您是否希望將數據發送給 Android Studio 團隊以幫助識別內存問題的來源。要了解詳情,請參閱運行內存使用情況報告

內存使用情況報告。

內存使用情況報告。

Windows:防病毒文件 I/O 優化

Android Studio 現在會自動檢查某些項目目錄是否已從實時防病毒掃描中排除。當能夠進行調整以提高構建性能時,Android Studio 會通知您并提供有關如何優化防病毒配置的說明。要了解詳情,請參閱最大限度地降低防病毒軟件對構建速度的影響

Project Marble:功能完善

本部分將介紹 Android Studio 3.5 中旨在改進現有功能的更改。

Apply Changes

借助 Apply Changes,您可以將代碼和資源更改推送給正在運行的應用,而無需重啟應用(在某些情況下,甚至無需重啟當前的 Activity)。Apply Changes 實現了一種全新的方法來保持應用的狀態。與重寫 APK 字節碼的 Instant Run 不同,Apply Changes 會利用 Android 8.0(API 級別 26)或更高版本中支持的運行時插樁,實時地重新定義類。

要了解詳情,請參閱 Apply Changes

Apply Changes 的工具欄按鈕。

Apply Changes 的工具欄按鈕。

應用部署流程

Android Studio 有一個新的下拉菜單,可讓您快速選擇要將應用部署到哪個設備。此菜單還包含一個新選項,可讓您一次在多個設備上運行您的應用。

目標設備下拉菜單。

目標設備下拉菜單。

改進了 Gradle 同步和緩存檢測功能

現在,Android Studio 能夠更好地檢測 Gradle 在減少其硬盤消耗時何時定期清除構建緩存。在以前的版本中,此狀態會導致 Android Studio 報告缺少依賴項,并導致 Gradle 同步失敗。現在,Android Studio 只需根據需要下載依賴項,以確保成功完成 Gradle 同步。

改進了構建錯誤輸出

Build 構建窗口圖標 窗口現在針對以下構建過程改進了錯誤報告,例如提供指向文件的鏈接以及所報告錯誤對應的行號:

  • AAPT 編譯和鏈接
  • R8 和 ProGuard
  • Dexing
  • 資源合并
  • XML 文件解析
  • Javac、Kotlinc 和 CMake 編譯

項目升級

改善了更新體驗,提供了更多信息和操作來幫助您更新 Android Studio 和 Android Gradle 插件。例如,有更多的同步和構建錯誤會包含幫助您在更新時減少錯誤的操作。

請務必注意,您可以獨立于 Android Gradle 插件等其他組件更新 Android Studio。因此,您可以在新版本推出后安全地更新 Android Studio,并在以后更新其他組件。

Layout Editor

Android Studio 3.5 對布局可視化、管理和互動功能進行了多項改進。

使用 ConstraintLayout 時,Attributes 面板中新的 Constraints 部分會列出所選界面組件的約束關系。您可以從設計圖面或約束列表中選擇一個約束條件,突出顯示這兩個區域中的約束條件。

所選界面元素的約束關系。

所選界面元素的約束關系。

同樣,您現在可以選擇某個約束條件并按 Delete 鍵,刪除約束條件。您還可以按住 Control 鍵(在 macOS 上,按住 Command)并點擊約束條件定位點來刪除約束條件。請注意,當您按住 ControlCommand 鍵并將鼠標懸停在定位點上時,任何關聯的約束條件都會變成紅色,表示您可以點擊以將其刪除。

選擇視圖后,您可以點擊 Attributes 面板的 Constraint Widget 部分的任何一個 + 圖標來創建約束條件,如下圖所示。當您創建新的約束條件時,Layout Editor 現在會選擇并突出顯示該約束條件,為您剛剛添加的約束條件提供即時視覺反饋。

此動畫演示了如何使用約束條件微件創建約束條件。

使用約束條件微件創建約束條件。

在創建約束條件時,Layout Editor 現在只會顯示您可以約束的符合條件的定位點。以前,Layout Editor 會突出顯示所有視圖上的所有定位點,無論您是否可以約束它們。此外,藍色疊加層現在會突出顯示約束條件的目標。這種突出顯示在嘗試約束與另一個組件重疊的組件時特別有用。

此動畫演示了如何在 Android Studio 3.4 中為重疊組件創建約束條件。

在 Android Studio 3.4 中為重疊組件創建約束條件。

此動畫演示了如何在 Android Studio 3.5 中為重疊組件創建約束條件。

在 Android Studio 3.5 中為重疊組件創建約束條件。

除了上述更新之外,Android Studio 3.5 還包含以下 Layout Editor 方面的改進:

  • 現在,您可以使用約束條件微件和默認外邊距下拉菜單將尺寸資源用于外邊距。
  • 在 Layout Editor 工具欄中,確定設計圖面大小的設備列表已經更新。此外,調整大小時的貼靠行為已得到改進,設計圖面上的調整大小手柄現在始終可見。調整大小時,系統會顯示可顯示常見設備尺寸的新疊加層。
  • Layout Editor 采用了新的配色方案,可改進組件、文本和約束條件之間的一致性并降低它們之間的對比度。
  • 藍圖模式現在包含對某些文本未顯示的組件的文本支持。

如需詳細了解這些更改,請參閱 Android Studio Project Marble:Layout Editor

數據綁定

除了為數據綁定添加增量注解處理支持之外,Android Studio 還改進了在 XML 中創建數據綁定表達式時智能編輯器的功能和性能。

此動畫演示了 Android Studio 3.4 上的代碼編輯器性能。

Android Studio 3.4 上的代碼編輯器性能。

此動畫演示了 Android Studio 3.5 上的代碼編輯器性能。

改進了 Android Studio 3.5 上的代碼編輯性能。

改進了對 C/C++ 項目的支持

Android Studio 3.5 包含一些更改,可以改進對 C/C++ 項目的支持。

針對單個變體同步的 Build Variants 面板改進

現在,您可以在 Build Variants 面板中同時指定活動構建變體和活動 ABI。此功能簡化了每個模塊的構建配置,還可以提高 Gradle 同步性能。

要了解詳情,請參閱更改構建變體

Build Variants 面板按 ABI 顯示單個變體選擇。

Build Variants 面板,按 ABI 進行單個變體選擇。

NDK 并排版本

現在,您可以并排使用 NDK 的多個版本。此功能可讓您更靈活地配置項目,例如,如果項目在同一計算機上使用了不同版本的 NDK。

如果您的項目使用 Android Gradle 插件 3.5.0 或更高版本,您還可以指定項目中每個模塊應使用的 NDK 版本。您可以使用此功能來創建可重現的構建版本,并緩解 NDK 版本與 Android Gradle 插件之間的不兼容性。

要了解詳情,請參閱安裝和配置 NDK、CMake 和 LLDB

支持 Chrome 操作系統

Android Studio 現已正式支持 Chrome 操作系統設備,例如 HP Chromebook x360 14、Acer Chromebook 13/Spin 13 以及其他設備,具體可參閱系統要求。要開始使用,請在兼容的 Chrome 操作系統設備上下載 Android Studio,然后按照安裝說明操作。

動態功能模塊的按條件分發

通過按條件分發,您可以針對將在應用安裝過程中自動下載的動態功能模塊來設置特定的設備配置要求。例如,您可以配置包含增強現實 (AR) 功能的動態功能模塊,其僅供支持 AR 功能的設備在安裝應用時可用。

此分發機制目前支持根據以下設備配置來控制模塊在應用安裝時的下載情況:

  • 設備硬件和軟件功能,包括 OpenGL ES 版本
  • 用戶所在國家/地區
  • API 級別

如果設備不滿足您指定的所有要求,相應模塊便不會在應用安裝時下載。不過,您的應用以后可以使用 Play 核心庫來請求按需下載此模塊。要了解詳情,請閱讀配置按條件分發

IntelliJ IDEA 2019.1

核心 Android Studio IDE 已更新,增加了 IntelliJ IDEA 2019.1 版本中的相關改進,例如主題背景自定義。

Android Studio 附帶的最后一個 IntelliJ 版本為 2018.3.4。要詳細了解此版本 Android Studio 累積的其他 IntelliJ 版本的改進,請參閱以下錯誤修復更新:

Android Gradle 插件 3.5.0 更新

要了解 Android Gradle 插件 3.5.0 中的新變化,例如針對增量注釋處理和可緩存單元測試的改進支持,請參閱其版本說明

社區貢獻者

感謝所有幫助我們發現錯誤及通過其他方式改進 Android Studio 3.5 的社區貢獻者。特別要感謝以下報告 P0 和 P1 錯誤的人士:

3.4(2019 年 4 月)

Android Studio 3.4 是一個主要版本,包含各種新功能和改進。

3.4.2(2019 年 7 月)

本次要更新修正了多個問題并進行了多項性能改進。要查看重要問題修復列表,請閱讀版本更新博客上的相關博文。

3.4.1(2019 年 5 月)

本次要更新修正了多個問題并進行了多項性能改進。要查看重要問題修復列表,請閱讀版本更新博客上的相關博文。

3.4.0 已知問題

  • 將應用部署到搭載 Android Q 測試版的設備時,系統會停用性能剖析功能。

  • 使用數據綁定庫時,LiveDataListener.onChanged() 可能會因 NPE 而失敗。針對此問題的修復程序將包含在 Android Studio 3.4.1 中,并且已在 Android Studio 3.5 的最新預覽版中提供。(請參閱問題 #122066788

IntelliJ IDEA 2018.3.4

核心 Android Studio IDE 已通過 2018.3.4 版本進行了更新,增加了 IntelliJ IDEA 中的相關改進。

Android Gradle 插件 3.4.0 更新

要了解 Android Gradle 插件 3.4.0 中的新變化,請參閱其版本說明

新的 Project Structure 對話框

新的 Project Structure 對話框 (PSD) 可讓您更輕松地更新依賴項并配置項目的不同方面,例如模塊、構建變體、簽名配置和構建變量。

您可以從菜單欄中依次選擇 File > Project Structure 來打開 PSD,也可以通過按 Ctrl+Shift+Alt+S(在 Windows 和 Linux 上)或 Command+;(分號,在 macOS 上)來打開 PSD。您可以在下面找到有關 PSD 的一些新部分和更新部分的說明。

變量

使用 PSD 新增的變量部分,您可以創建和管理構建變量,例如用于確保依賴項的版本號在項目中保持一致的構建變量。

  • 快速查看和修改項目的 Gradle 構建腳本中已有的構建變量。
  • 直接從 PSD 添加新的項目級或模塊級構建變量。

模塊

配置應用于現有模塊中所有構建變體的屬性,或者從 Modules 部分向項目添加新模塊。例如,您可以在此處配置 defaultConfig 屬性或管理簽名配置。

依賴項

檢查并以圖形方式呈現項目依賴項圖中的每個依賴項(如 Gradle 在項目同步時所解析的那樣),具體步驟如下:

  1. 在 PSD 的左側窗格中,選擇 Dependencies
  2. Modules 窗格中,選擇您想要檢查已解析的依賴項的模塊。
  3. 在 PSD 的右側,打開 Resolved Dependencies 窗格,如下所示。

您還可以快速搜索依賴項并將其添加到項目中,具體方法是:首先從 PSD 的 Dependencies 部分選擇一個模塊,點擊 Declared Dependencies 部分中的 (+) 按鈕,然后選擇要添加的依賴項類型。

根據您選擇的依賴項的類型,您應該會看到一個類似如下的對話框,它可以幫助您向模塊中添加依賴項。

構建變體

在 PSD 的這一部分中,為項目中的每個模塊創建和配置構建變體和產品風格。您可以添加清單占位符,添加 ProGuard 文件以及分配簽名密鑰等。

建議

您可以在 Suggestions 部分中查看為項目依賴項和構建變量建議的更新,如下圖所示。

新的 Resource Manager

Resource Manager 是一個新的工具窗口,用于在應用中導入、創建、管理和使用資源。您可以從菜單欄中依次選擇 View > Tool Windows > Resource Manager 來打開工具窗口。通過 Resource Manager,您可以執行以下操作:

  • 直觀地呈現資源:您可以預覽可繪制資源、顏色和布局,以快速找到所需的資源。
  • 批量導入:您可以一次導入多項可繪制資源,具體方法是:將這些資源拖放到 Resource Manager 工具窗口中或使用 Import drawables 向導。要訪問向導,請選擇工具窗口左上角的 (+) 按鈕,然后從下拉菜單中選擇 Import Drawables
  • 將 SVG 轉換為 VectorDrawable 對象:您可以使用 Import Drawables 向導將 SVG 圖片轉換為 VectorDrawable 對象。
  • 拖放資源:在 Resource Manager 工具窗口中,您可以將可繪制資源拖放到 Layout Editor 的設計視圖和 XML 視圖上。
  • 查看備用版本:現在,您可以在 Tool 窗口中雙擊某項資源來查看該資源的備用版本。此視圖會顯示您創建的不同版本以及包含的限定符。
  • 平鋪和列表視圖:您可以在工具窗口中更改視圖,以便以不同的排列方式顯示您的資源。

要了解詳情,請閱讀有關如何管理應用資源的指南。

在對 APK 進行性能剖析和調試時檢查版本號

當您為 APK 內的 .so 共享庫提供調試符號文件時,Android Studio 會驗證所提供的符號文件的版本號是否與 APK 內 庫的版本號匹配。

如果您通過版本號構建 APK 中的原生庫,Android Studio 會檢查符號文件中的版本號是否與原生庫中的版本號匹配,如果不匹配,會拒絕該符號文件。如果您不是使用版本號構建的原生庫,則提供不正確的符號文件可能會導致調試出現問題。

R8 默認處于啟用狀態

R8 將脫糖、壓縮、混淆、優化和 dex 處理整合到一個步驟中,從而顯著提高了構建性能。R8 是在 Android Gradle 插件 3.3.0 中引入的,對于使用插件 3.4.0 及更高版本的應用和 Android 庫項目,R8 現已默認處于啟用狀態。

下圖是 R8 引入之前的編譯流程的簡要概覽。

在 R8 之前,ProGuard 是一個與 dex 處理和脫糖不同的編譯步驟。

現在,有了 R8,可以在一個步驟中完成脫糖、壓縮、混淆、優化和 dex 處理 (D8),如下圖所示。

有了 R8,可以在一個編譯步驟中執行脫糖、壓縮、混淆、優化和 dex 處理。

請注意,R8 旨在與您現有的 ProGuard 規則配合使用,因此您可能不需要采取任何操作即可從 R8 中受益。但是,相對專為 Android 項目設計的 ProGuard 而言,R8 是一項不同的技術,因此壓縮和優化可能會導致移除 ProGuard 可能沒有的代碼。因此,在這種情況(盡管不太可能發生)下,您可能需要添加其他規則,以在構建輸出中保留這些代碼。

如果您在使用 R8 時遇到問題,請閱讀 R8 兼容性常見問題解答一文,以檢查是否有針對您的問題的解決方案。如果沒有記錄的解決方案,請報告錯誤。您可以停用 R8,只需將以下其中一行內容添加到項目的 gradle.properties 文件即可:

# Disables R8 for Android Library modules only.
    android.enableR8.libraries = false
    # Disables R8 for all modules.
    android.enableR8 = false
    

現在,導航組件支持的所有參數類型都在 Navigation Editor 中得到支持。要詳細了解支持的類型,請參閱在平臺之間傳遞數據

Layout Editor 方面的改進

Layout Editor 中的 Attributes 窗格已經簡化為單個頁面,您可以展開該頁面中的各部分,查看可配置的屬性。Attributes 窗格還包含以下更新:

  • 新的 Declared Attributes 部分列出了布局文件指定的屬性,并且可讓您快速添加新屬性。
  • 現在,Attributes 窗格還會在每個屬性旁邊顯示指示符,當該屬性的值是資源引用時,這些指示符是非中空的 ,在其他情況下則是中空的
  • 現在,系統會突出顯示帶有錯誤或警告的屬性。紅色表示錯誤(例如,使用無效布局值時),橙色表示警告(例如,使用硬編碼值時)。

用于快速導入依賴項的新 intent 操作

如果您開始在代碼中使用某些 Jetpack 和 Firebase 類,則新的 intent 操作會建議將所需的 Gradle 庫依賴項添加到項目中(如果您尚未這樣做)。例如,如果您在未先導入所需的 android.arch.work:work-runtime 依賴項的情況下引用 WorkManager 類,則 intent 操作可讓您只需點擊一次即可輕松實現此目的,如下所示。

特別是,由于 Jetpack 將支持庫重新打包為易于管理和更新的獨立軟件包,因此該 intent 操作可幫助您快速添加您想要使用的 Jetpack 組件所需的依賴項。

3.3(2019 年 1 月)

Android Studio 3.3 是一個主要版本,包含各種新功能和改進。

3.3.2(2019 年 3 月)

本次要更新修正了多個問題并進行了多項性能改進。要查看重要問題修復列表,請閱讀版本更新博客上的相關博文。

3.3.1(2019 年 2 月)

本次要更新修正了多個問題并進行了多項性能改進。

IntelliJ IDEA 2018.2.2

核心 Android Studio IDE 已通過 2018.2.2 版本進行了更新,增加了 IntelliJ IDEA 中的相關改進。

Android Gradle 插件更新

要了解 Android Gradle 插件中的新變化,請參閱其版本說明

借助 Navigation Editor,您可以使用導航架構組件快速可視化導航內容并將其納入您的應用中。

如需了解詳情,請參閱使用導航架構組件實現導航

刪除未使用的 Android Studio 目錄

當您首次運行 Android Studio 的主要版本時,它會查找包含緩存、設置、索引和日志的目錄,以確定找不到對應安裝內容的 Android Studio 的版本。然后,Delete Unused Android Studio Directories 對話框中會顯示這些未使用目錄的位置、大小和最后修改時間,并提供刪除它們的選項。

Android Studio 考慮刪除的目錄如下所示:

  • Linux:~/.AndroidStudio[Preview]_X.Y_
  • Mac:~/Library/{Preferences, Caches, Logs, Application Support}/AndroidStudio[Preview]_X.Y_
  • Windows:%USER%\.AndroidStudio[Preview]_X.Y_

Lint 方面的改進

從 Gradle 調用時,Lint 的運行速度明顯加快 - 對于較大的項目,Lint 的運行速度最多可提高四倍。

“Create New Project”向導

Create New Project 向導具有全新外觀,并且包含有助于簡化新 Android Studio 項目創建過程的更新。

如需了解詳情,請參閱創建項目

分析器更新

Android Studio 3.3 包含對多個分析器的更新。

改進了性能

根據用戶反饋,使用分析器時的渲染性能得到了極大的改善。請繼續提供反饋,特別是在您依舊看到性能問題時。

分析器內存分配跟蹤選項

為了在進行性能剖析時提高應用性能,Memory Profiler 現在會默認定期對內存分配進行采樣。如果需要,您可以在搭載 Android 8.0(API 級別 26)或更高版本的設備上進行測試時使用 Allocation Tracking 下拉列表來更改此行為。

您可以從 Allocation Tracking 下拉列表中選擇以下模式:

  • Full:捕獲所有對象內存分配。請注意,如果您有一個分配了大量對象的應用,則可能會在進行性能剖析時遇到重大性能問題。
  • Sampled:捕獲對象內存分配的周期性采樣。這是默認行為,在進行性能剖析時對應用性能的影響較小。對于在短時間內分配大量對象的應用,您可能會遇到一些性能問題。
  • Off:關閉內存分配。如果未選擇此選項,系統會在記錄 CPU 時自動啟用此模式,然后在記錄完成后恢復先前的設置。您可以在 CPU 記錄配置對話框中更改此行為。

    跟蹤會同時影響 Java 對象和 JNI 引用。

檢查幀渲染數據

CPU Profiler 中,您現在可以檢查 Java 應用在主界面線程和 RenderThread 上渲染每個幀所需的時間。在調查會導致界面卡頓和幀速率偏低的瓶頸時,此數據可能很有用。例如,每個用時超過 16 毫秒才能保持順暢幀速率的幀都以紅色顯示。

要查看幀渲染數據,請使用使您可以跟蹤系統調用的配置來記錄跟蹤。記錄跟蹤后,在 FRAMES 部分下查找沿記錄時間軸的每個幀的相關信息,如下所示。

要詳細了解如何調查和解決幀速率問題,請閱讀渲染速度緩慢

事件時間軸中的 Fragment

事件時間軸現在會顯示附加和分離 Fragment 的時間。此外,將鼠標懸停在某個 Fragment 上時,工具提示會顯示 Fragment 狀態。

在 Network Profiler 中查看連接負載的格式化文本

以前,Network Profiler 僅顯示來自連接負載的原始文本。Android Studio 3.3 現在會默認格式化某些文本類型,包括 JSON、XML 和 HTML。在 ResponseRequest 標簽頁中,點擊 View Parsed 鏈接可顯示格式化文本,點擊 View Source 鏈接可顯示原始文本。

如需了解詳情,請參閱使用 Network Profiler 檢查網絡流量

自動下載 SDK 組件

當您的項目需要 SDK 平臺、NDK 或 CMake 中的 SDK 組件時,Gradle 現在會嘗試自動下載所需的軟件包,前提是您之前已使用 SDK 管理器接受了所有相關的許可協議。

如需了解詳情,請參閱使用 Gradle 自動下載缺失的軟件包

對 Clang-Tidy 的支持

Android Studio 現在支持使用 Clang-Tidy 對包含原生代碼的項目進行靜態代碼分析。要啟用對 Clang-Tidy 的支持,請將 NDK 更新為 r18 或更高版本。

然后,您可以啟用或重新啟用檢查,方法是打開 Settings 或 Preferences 對話框,然后依次轉到 Editor > Inspections > C/C++ > General > Clang-Tidy。在 SettingsPreferences 對話框中選擇此檢查時,您還可以在最右側面板的 Option 部分下看到已啟用和停用的 Clang-Tidy 檢查列表。要啟用其他檢查,請將其添加到列表中,然后點擊 Apply

要使用其他選項配置 Clang-Tidy,請點擊 Configure Clang-Tidy Checks Options,然后在隨即打開的對話框中添加這些選項。

移除了針對 C++ 自定義的選項

已從 Customize C++ Support 對話框中移除以下選項:

  • Exceptions Support (-fexceptions)
  • Runtime Type Information Support (-ftti)

系統已對通過 Android Studio 創建的所有項目啟用相應行為。

CMake 版本 3.10.2

SDK 管理器現在包含 CMake 版本 3.10.2。請注意,Gradle 默認仍會使用版本 3.6.0。

要為 Gradle 指定要使用的 CMake 版本,請將以下內容添加到模塊的 build.gradle 文件中:

android {
        ...
        externalNativeBuild {
            cmake {
                ...
                version "3.10.2"
            }
        }
    }
    

要詳細了解如何在 build.gradle 中配置 CMake,請參閱手動配置 Gradle

用于指定最低 CMake 版本的新“+”語法

在主模塊的 build.gradle 文件中指定 CMake 的版本時,您現在可以附加“+”以匹配 CMake cmake_minimum_required() 命令的行為。

Android App Bundle 現在支持免安裝應用

Android Studio 現在允許您構建 Android App Bundle,并且完全支持 Google Play 免安裝體驗。換句話說,您現在可以構建和部署單個 Android Studio 項目中的已安裝應用和免安裝體驗,并將其納入單個 Android App Bundle 中。

如果您要使用 Create New Project 對話框創建新的 Android Studio 項目,請確保選中 Configure your project > This project will support instant apps 旁邊的復選框。然后,Android Studio 會像往常一樣創建新的應用項目,但會在清單中包含以下屬性,以便向應用的基本模塊添加免安裝應用支持:

<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    

然后,您可以創建支持免安裝體驗的動態功能模塊,方法是從菜單欄中依次選擇 File > New > New Module,然后從 Create New Module 對話框中選擇 Instant Dynamic Feature Module。請注意,創建此模塊也會使應用的基本模塊支持免安裝體驗。

要將應用作為免安裝應用部署到本地設備,請修改您的運行配置,然后選中 General > Deploy as instant app 旁邊的復選框。

單變體項目同步

將項目與構建配置同步,是讓 Android Studio 了解項目結構的重要步驟。不過,對于大型項目來說,此過程可能非常耗時。如果您的項目使用了多個構建變體,那么您現在可以限定僅同步當前所選的變體,從而優化項目同步操作。

您需要結合使用 Android Studio 3.3 或更高版本與 Android Gradle 插件 3.3.0 或更高版本,才能啟用此優化。滿足這些要求后,Android Studio 會在您同步項目時提示您啟用此優化。默認情況下,新項目也會啟用此優化。

要手動啟用此優化功能,請依次點擊 File > Settings > Experimental > Gradle(在 Mac 上,請依次點擊 Android Studio > Preferences > Experimental > Gradle),然后選中 Only sync the active variant 復選框。

如需了解詳情,請參閱啟用單變體項目同步

提供快速反饋

如果您已選擇分享使用情況統計信息以幫助改進 Android Studio,則會在 Android Studio窗口底部的狀態欄中看到以下兩個新圖標:

只需點擊最能代表您目前使用 Android Studio 的體驗的圖標來提供反饋即可。在您執行此操作后,Android Studio 會發送使用情況統計信息,讓 Android Studio 團隊能夠更好地了解您的感受。在某些情況下,例如,當您表示在使用 Android Studio 時有不好的體驗時,您將有機會提供進一步的反饋。

如果尚未啟用分享使用情況統計信息,您可以通過以下步驟予以啟用:打開 Settings 對話框(在 Mac 上,則打開 Preferences),依次轉到 Appearance & Behavior > System Settings > Data Sharing,然后選中 Send usage statistics to Google。

3.2(2018 年 9 月)

Android Studio 3.2 是一個主要版本,包含各種新功能和改進。

3.2.1(2018 年 10 月)

這項 Android Studio 3.2 更新進行了下列更改和修復:

  • 捆綁的 Kotlin 版本現為 1.2.71。
  • 默認的構建工具版本現為 28.0.3。
  • 在導航庫中,參數類型已從 type 重命名為 argType
  • 下列錯誤已得到修復:
    • 使用數據綁定庫時,變量名稱帶有下劃線會導致編譯錯誤。
    • CMake 會導致 IntelliSense 和其他 CLion 功能失敗。
    • 添加 SliceProvider 會導致在未使用 androidx.* 庫的項目出現編譯錯誤。
    • 一些 Kotlin 單元測試沒有運行。
    • 數據綁定問題會導致 PsiInvalidElementAccessException
    • <merge> 元素有時會導致 Layout Editor 崩潰。

3.2.0 已知問題

注意:以下問題已在 Android Studio 3.2.1 中得到解決

  • 我們強烈建議您不要使用 Kotlin 版本 1.2.70。

    Kotlin 版本 1.2.61 修復了一個可能會導致 Android Studio 掛起的錯誤,但 Kotlin 1.2.70 不包含此修復

    但是,Kotlin 版本 1.2.71 及更高版本確實包含此修復。

  • 雖然您通常不需要指定構建工具版本,但在使用 Android Gradle 插件 3.2.0 時(renderscriptSupportModeEnabled 設為 true),您需要在每個模塊的 build.gradle 文件中包含以下內容:

    android.buildToolsVersion "28.0.3"

什么是全新的 Assistant

全新的 Assistant 會通知您 Android Studio 中的最新變化。

當您在全新安裝或更新后啟動 Android Studio 時,如果系統檢測到有新信息需要顯示,Assistant 便會打開。您也可以依次選擇 Help > What's new in Android Studio 來打開 Assistant。

Android Jetpack

Android Jetpack 提供各種組件、工具和指南以消除重復性任務,讓您能夠更快速、更輕松地構建高品質的可測試應用,從而幫助加速 Android 開發。Android Studio 進行了以下更新以支持 Jetpack。如需了解詳情,請參閱 Jetpack 文檔

新的 Navigation Editor 與 Android Jetpack 的導航組件集成,提供了用于創建應用導航結構的圖形視圖。Navigation Editor 簡化了應用內目標之間的導航設計和實現。

在 Android Studio 3.2 中,Navigation Editor 是一項實驗性功能。要啟用 Navigation Editor,請依次點擊 File > Settings(在 Mac 上,則依次點擊 Android Studio > Preferences),選擇左側面板中的 Experimental 類別,選中 Enable Navigation Editor 旁邊的復選框,然后重新啟動 Android Studio。

如需了解詳情,請參閱 Navigation Editor 文檔

AndroidX 遷移

作為 Jetpack 的一部分,我們正在將 Android 支持庫遷移到使用 androidx 命名空間的全新 Android 擴展庫。如需了解詳情,請參閱 AndroidX 概覽

Android Studio 3.2 利用一項新的遷移功能來幫助您完成此過程。

要將現有項目遷移到 AndroidX,請依次選擇 Refactor > Migrate to AndroidX。如果您有任何尚未遷移到 AndroidX 命名空間的 Maven 依賴項,則 Android Studio 構建系統還會自動轉換這些項目依賴項。

Android Gradle 插件提供以下可在 gradle.properties 文件中設置的全局標記:

  • android.useAndroidX:當設為 true 時,此標記表示您想立即開始使用 AndroidX。如果缺少此標記,則 Android Studio 會假定此標記已設為 false
  • android.enableJetifier:設為 true 時,此標記表示您希望獲得工具支持(通過 Android Gradle 插件),以自動轉換現有的第三方庫,就像它們是為 AndroidX 而編寫的一樣。如果缺少此標記,則 Android Studio 會假定此標記已設為 false

當您使用 Migrate to AndroidX 命令時,這兩個標記都會設為 true

如果您想立即開始使用 AndroidX 庫,而無需轉換現有的第三方庫,則可以將 android.useAndroidX 標記設為 true 并將 android.enableJetifier 標記設為 false

Android App Bundle

Android App Bundle 是一種全新的上傳格式,其中包含您應用的所有經過編譯的代碼和資源,但 APK 生成及簽名則延后到 Google Play 商店來完成。

Google Play 新推出的應用服務模式名叫“Dynamic Delivery”,會使用您的 app bundle 針對每位用戶的設備配置生成并提供經過優化的 APK,因此他們只需下載運行您的應用所需的代碼和資源。您無需再構建、簽署和管理多個 APK,而用戶也可以下載更小、更優化的下載文件包。

此外,您還可以向應用項目添加動態功能模塊,并將其包含在 app bundle 中。借由 Dynamic Delivery,您的用戶可以按需下載和安裝您應用的動態功能。

要構建軟件包,請依次選擇 Build > Build Bundle(s)/APK(s) > Build Bundle(s)

如需了解詳情,包括與構建和分析 Android App Bundle 有關的說明,請參閱 Android App Bundle

Layout Editor 中的示例數據

許多 Android 布局都包含運行時數據,而這可能導致在應用開發的設計階段難以以圖形的方式呈現布局的外觀和風格。現在,您可以輕松地在填充有示例數據的 Layout Editor 中查看視圖預覽。在添加視圖時, 按鈕會顯示在設計窗口中的視圖下方。點擊此按鈕即可設置設計時視圖屬性。您可以從各種各樣的示例數據模板中選擇,并指定用于填充相應視圖的示例項目的數量。

要嘗試使用示例數據,請將 RecyclerView 添加到新布局,點擊視圖下方的設計時屬性按鈕 ,然后從示例數據模板的輪播界面中選擇一個選項。

切片

“切片”提供了一種全新的方式,讓您能夠將應用的部分功能嵌入到 Android 上的其他界面中。例如,借助切片,您可以在 Google 搜索建議中顯示應用功能和內容。

Android Studio 3.2 不但包含一個內置模板,可以幫助您使用新的切片提供商 API 來擴展您的應用,而且還包含新的 Lint 檢查功能,可以確保您在構建切片時遵循最佳做法。

要開始使用,請右鍵點擊一個項目文件夾,然后依次選擇 New > Other > Slice Provider

如需了解詳情,包括如何測試切片交互,請參閱切片入門指南

Kotlin 1.2.61

Android Studio 3.2 捆綁了 Kotlin 1.2.61,并且新的 Android SDK 可與 Kotlin 更好地集成。如需了解詳情,請參閱 Android 開發者博客

IntelliJ IDEA 2018.1.6

核心 Android Studio IDE 已通過 2018.1.6 版本進行了更新,增加了 IntelliJ IDEA 中的相關改進。

Android Profiler

請試用 Android Studio 3.2 中的以下全新 Android Profiler 功能。

會話

您現在可以將分析器數據保存為會話,以便日后重新訪問和檢查。分析器會一直保存您的會話數據,直到您重啟 Android Studio 為止。

在您記錄方法跟蹤捕獲堆轉儲后,IDE 會將相應數據(以及您應用的網絡活動)作為單獨的條目添加到當前會話,并且您可以輕松地在記錄之間來回切換以比較數據。

系統跟蹤

CPU Profiler 中,選擇新的 System Trace 配置即可檢查設備的系統 CPU 和線程活動。此跟蹤配置是基于 systrace 構建的,并且可用于調查系統級問題,例如界面卡頓。

使用此跟蹤配置時,您可以使用原生跟蹤 API 檢測 C/C++ 代碼或使用 Trace 類檢測 Java 代碼,從而直觀地標記分析器時間軸上的重要代碼例程。

在 Memory Profiler 中檢查 JNI 引用

如果您將應用部署到搭載 Android 8.0(API 級別 26)或更高版本的設備,那么您現在可以使用 Memory Profiler 來檢查應用 JNI 代碼的內存分配情況。

在您的應用運行時,選擇您想檢查的一部分時間軸,然后從類列表上方的下拉菜單中選擇 JNI heap,具體如下所示。然后,您可以像往常一樣檢查堆中的對象,并雙擊 Allocation Call Stack 標簽中的對象,以查看 JNI 引用已分配并發布到了代碼中的哪些位置。

導入、導出和檢查內存堆轉儲文件

您現在可以導入、導出和檢查使用 Memory Profiler 創建的 .hprof 內存堆轉儲文件。

要導入 .hprof 文件,請在分析器的 Sessions 窗格中點擊 Start new profiler session,然后選擇 Load from file。然后,您可以像在任何其他堆轉儲中一樣檢查 Memory Profiler 中的數據。

要保存堆轉儲數據以供日后查看,請使用 Sessions 窗格中 Heap Dump 條目右側的 Export Heap Dump 按鈕。在隨即顯示的 Export As 對話框中,使用 .hprof 文件擴展名保存文件。

在應用啟動過程中記錄 CPU 活動

您可以在應用啟動過程中記錄 CPU 活動,具體操作如下所示:

  1. 從主菜單中依次選擇 Run > Edit Configurations
  2. 在所需運行配置的 Profiling 標簽下,選中 Start recording a method trace on startup 旁邊的方框。
  3. 從下拉菜單中選擇要使用的 CPU 記錄配置。
  4. 依次選擇 Run > Profile,將您的應用部署到搭載 Android 8.0(API 級別 26)或更高版本的設備上。

導出 CPU 跟蹤記錄

在您使用 CPU Profiler 記錄 CPU 活動后,您可以將相應數據導出為 .trace 文件,以便與他人共享或日后進行檢查。

要在記錄 CPU 活動后導出跟蹤記錄,請執行以下操作:

  1. 右鍵點擊您想從 CPU 時間軸中導出的記錄。
  2. 從下拉菜單中選擇 Export trace
  3. 轉到您想保存文件的位置,然后點擊 Save

導入和檢查 CPU 跟蹤文件

您現在可以導入和檢查使用 Debug APICPU Profiler 創建的 .trace 文件。(目前,您無法導入系統跟蹤記錄)。

要導入跟蹤文件,請在分析器的 Sessions 窗格中點擊 Start new profiler session 圖標 ,然后選擇 Load from file。然后,您可以按照與往常相似的方式檢查 CPU Profiler 中的數據,但以下情況例外:

  • CPU 活動未顯示在 CPU 時間軸上。
  • 線程活動時間軸僅指明了可在哪里獲取各線程跟蹤數據,而未指明實際線程狀態(如運行中、等待中或休眠中)。

使用 Debug API 記錄 CPU 活動

現在,您可以使用 Debug API 設置您的應用以便開始和停止在 CPU Profiler 中記錄 CPU 活動。在您將應用部署到某個設備后,分析器會在您的應用調用 startMethodTracing(String tracePath) 時自動開始記錄 CPU 活動,并會在您的應用調用 stopMethodTracing() 時停止記錄。在記錄使用此 API 觸發的 CPU 活動時,CPU Profiler 會將 Debug API 顯示為所選的 CPU 記錄配置。

Energy Profiler

Energy Profiler 能夠以圖形方式顯示您的應用的估算耗電量,以及影響耗電量的系統事件(例如喚醒鎖定、鬧鐘和作業)。

當您在搭載 Android 8.0 (API 26) 或更高版本的關聯設備或 Android 模擬器中運行您的應用時,Energy Profiler 便會顯示為 Profiler 窗口底部的新行。

點擊 Energy 行即可將 Energy Profiler 視圖最大化。將鼠標指針放在時間軸中的條形上方,即可查看 CPU、網絡和位置信息 (GPS) 資源,以及相關系統事件。

影響耗電量的系統事件會在 Energy 時間軸下方的 System 時間軸中指明。當您在 Energy 時間軸中選擇時間范圍時,事件窗格中會顯示指定時間范圍內的系統事件的詳細信息。

要查看系統事件(如喚醒鎖定)的調用堆棧和其他詳細信息,請在事件窗格中選擇該事件。要轉到負責系統事件的代碼,請雙擊調用堆棧中的相應條目。

Lint 檢查

Android Studio 3.2 包含許多用于 Lint 檢查的新功能和經過改進的功能。

新的 Lint 檢查功能可幫助您查找和識別常見的代碼問題,包括與潛在易用性問題有關的警告,以及與潛在安全漏洞有關的高優先級錯誤。

針對 Java/Kotlin 互操作性的 Lint 檢查

為確保 Java 代碼與 Kotlin 代碼之間的良好互操性,新的 Lint 檢查會強制執行 Kotlin 互操作指南中所述的最佳做法。這些檢查的示例包括查找是否存在空性注釋、是否使用了 Kotlin 硬關鍵字、是否將 lambda 參數放置在最后等。

要啟用這些檢查,請依次點擊 File > Settings(在 Mac 上,則依次點擊 Android Studio > Preferences)打開 Settings 對話框,依次轉到 Editor > Inspections > Android > Lint > Interoperability > Kotlin Interoperability 部分,然后選擇要啟用的規則。

要對命令行構建啟用這些檢查,請在 build.gradle 文件中添加以下內容:

android {
        lintOptions {
            check 'Interoperability'
        }
    }
    

針對切片的 Lint 檢查

針對切片的新 Lint 檢查可以確保您構建切片的方式正確無誤。例如,如果您沒有將主要操作分配到某個切片,Lint 檢查就會向您發出警告。

新的 Gradle 目標

借助新的 lintFix Gradle 任務,您可以將 Lint 檢查建議的所有安全修正直接應用于源代碼。會建議您應用安全修正的 Lint 檢查示例如下:SyntheticAccessor

元數據更新

各種元數據(例如服務投射檢查)已針對 Lint 檢查進行更新,以便配合 Android 9(API 級別 28)使用。

如果在新變體上運行 Lint,則會收到警告

Lint 現在會記錄與基準一起記錄的變體和版本,如果您在與基準一起創建的變體以外的其他變體上運行 Lint,Lint 就會向您發出警告。

改進了現有 Lint 檢查

Android Studio 3.2 包含對現有 Lint 檢查的許多改進。例如,資源周期檢查現在適用于其他資源類型,并且翻譯檢測器現在可以在編輯器中實時查找缺失的翻譯。

更容易找到問題 ID

問題 ID 現在會顯示在更多位置,其中包括 Inspection Results 窗口,讓您可以更輕松地找到所需信息,以便通過 build.gradle 中的 lintOptions 啟用或停用特定檢查。

如需了解詳情,請參閱通過 Gradle 配置 Lint 選項

Data Binding V2

Data Binding V2 現已默認處于啟用狀態,并與 V1 兼容。這意味著,如果您擁有使用 V1 編譯的庫依賴項,則可以將其用于使用 Data Binding V2 的項目。不過請注意,使用 V1 的項目無法利用使用 V2 編譯的依賴項。

D8 脫糖

在 Android Studio 3.1 中,我們已將脫糖步驟作為一項實驗性功能集成到 D8 工具中,這能夠減少總體構建時間。使用 D8 進行脫糖的功能在 Android Studio 3.2 中默認處于開啟狀態。

新的代碼壓縮器

R8 是一種用于執行代碼壓縮和混淆的新工具,替代了 ProGuard。您只需將以下內容添加到項目的 gradle.properties 文件中,即可開始使用 R8 的預覽版本:

android.enableR8 = true
    

更改了針對多 APK 的默認 ABI

構建分別以不同 ABI 為目標的多個 APK 時,默認情況下,插件不會再針對以下 ABI 生成 APK:mipsmips64armeabi

如果您想構建以上述 ABI 為目標的 APK,必須使用 NDK r16b 或更低版本,并在 build.gradle 文件中指定這些 ABI,如下所示:

    splits {
        abi {
            include 'armeabi', 'mips', 'mips64'
            ...
        }
    }
    

改進了針對 CMake 構建文件的編輯器功能

如果您使用 CMake 將 C 和 C++ 代碼添加到您的項目,則 Android Studio 現在包含經過改進的編輯器功能,可幫助您修改 CMake 構建腳本,例如:

  • 語法突出顯示和代碼自動填充:IDE 現在會突出顯示常用的 CMake 命令并提出相應的代碼自動填充建議。此外,您只需點擊某個文件,同時按 Ctrl 鍵(在 Mac 上,則按 Command 鍵)即可轉到此文件所在的位置。
  • 代碼重新格式化:您現在可以使用 IntelliJ 的代碼重新格式化選項將代碼樣式應用于 CMake 構建腳本。
  • 安全重構:IDE 內置的重構工具現在還會檢查您是否正在重命名或刪除 CMake 構建腳本中引用的文件。

在以前版本的 Android Studio 中使用 Project 窗口時,您只能瀏覽和檢查從本地項目構建的庫中包含的標頭文件。在此版本中,您現在還可以查看和檢查導入到應用項目的外部 C/C++ 庫依賴項中包含的標頭文件。

如果您已在項目中添加 C/C++ 代碼和庫,請在主菜單中依次選擇 View > Tool Windows > Project,打開 Android Studio 左側的 Project 窗口,然后從下拉菜單中選擇 Android。在 cpp 目錄中,應用項目范圍內的所有標頭都位于各本地 C/C++ 庫依賴項的 include 節點下,具體如下所示。

原生多 dex 處理默認處于啟用狀態

以前版本的 Android Studio 會在將應用的調試版本部署到搭載 Android API 級別 21 或更高級別的設備時啟用原生多 dex 處理。現在,無論您是要部署到設備,還是要構建 APK 以供發布,Gradle 的 Android 插件都會針對所有設置為 minSdkVersion=21 或更高版本的模塊啟用原生多 dex 處理。

AAPT2 移動到 Google 的 Maven 代碼庫中

從 Android Studio 3.2 開始,AAPT2 (Android Asset Packaging Tool 2) 的來源為 Google 的 Maven 代碼庫。

要使用 AAPT2,請確保您的 build.gradle 文件中包含 google() 依賴項,如下所示:

      buildscript {
          repositories {
              google() // here
              jcenter()
          }
          dependencies {
              classpath 'com.android.tools.build:gradle:3.2.0'
          }
      } allprojects {
          repositories {
              google() // and here
              jcenter()
      }
    

新版本的 AAPT2 修正了許多問題,包括改進了在 Windows 上對非 ASCII 字符的處理。

移除了按需配置

按需配置偏好設置已從 Android Studio 中移除。

Android Studio 不再將 --configure-on-demand 參數傳遞給 Gradle。

ADB Connection Assistant

新的 ADB Connection Assistant 提供了逐步說明,可以幫助您通過 Android 調試橋 (ADB) 關聯來設置和使用設備。

要啟用此 Assistant,請依次選擇 Tools > Connection Assistant

ADB Connection Assistant 在 Assistant 面板中的一系列頁面中提供了說明、環境控件以及關聯設備列表。

模擬器的改進

您現在可以隨時在 Android 模擬器中保存和加載 AVD (Android Virtual Device) 快照,以便快速輕松地讓模擬設備返回已知狀態以進行測試。在使用 AVD Manager 修改 AVD 時,您可以指定在 AVD 啟動時加載哪個 AVD 快照。

用于保存、加載和管理 AVD 快照的控件現在位于模擬器的 Extended controls 窗口的 Snapshots 標簽中。

如需了解詳情,請參閱 Snapshots

要詳細了解模擬器中的新變化以及變更內容,請參閱模擬器版本說明

3.1(2018 年 3 月)

Android Studio 3.1.0 是一個主要版本,包含各種新功能和改進。

3.1.4(2018 年 8 月)

這項 Android Studio 3.1 更新進行了下列更改和修復:

  • 捆綁的 Kotlin 版本現為 1.2.50。
  • 使用 kotlin-stdlib-jdk* artifacts(而非已棄用的 kotlin-stdlib-jre* 軟件工件)創建新項目。
  • 對 ProGuard 規則的 R8 解析已得到改進。
  • 下列錯誤已得到修復:
    • 嘗試運行 Kotlin Main 類失敗,并出現錯誤:"Error: Could not find or load main class..."
    • R8 在執行某些優化時進入了無限循環。
    • Run 窗口中使用 Rerun failed tests 命令有時會錯誤地返回“No tests were found”消息。
    • D8 未正確處理 invoke-virtual 實例,導致 VerifyError 崩潰:invoke-super/virtual can't be used on private method
    • 數據綁定編譯器依賴于舊版本的 com.android.tools:annotations。現在,編譯器會使用來自基礎項目的工具注釋(如可用)。
    • 使用分析器時,Android Studio 在 Fragment 過渡期間崩潰。
    • 在調試包含文本框的布局時,調試器發生崩潰。
    • D8 無法讀取某些帶有特殊字符的 ZIP 文件。

3.1.3(2018 年 6 月)

這項 Android Studio 3.1 更新修復了下列錯誤:

  • 內存泄漏導致 Android Studio 在您使用布局編輯器后變得緩慢且無響應。此更新包含針對大多數此類問題的修復程序。我們打算很快發布另一項更新來解決額外的內存泄漏問題。
  • 一些使用 D8 構建的應用在部分 Verizon Ellipsis 平板電腦上出現崩潰。
  • 在搭載 Android 5.0 或 5.1(API 級別 21 或 22)的設備上,使用 D8 構建的應用的安裝失敗并出現 INSTALL_FAILED_DEXOPT 錯誤。
  • 一些使用 OkHttp 庫并使用 D8 構建的應用在搭載 Android 4.4(API 級別 19)的設備上出現崩潰。
  • Android Studio 有時無法啟動,并在類初始化期間出現 ProcessCanceledException(對于 com.intellij.psi.jsp.JspElementType)。

3.1.2(2018 年 4 月)

這項 Android Studio 3.1 更新修復了下列錯誤:

  • 在某些情況下,Android Studio 會在退出時無限期掛起。
  • 啟用 Instant Run 后,使用源集配置的構建失敗,并顯示以下消息:

    "The SourceSet name is not recognized by the Android Gradle Plugin."

  • 啟用 Instant Run 后,由 Run 命令觸發的新 Kotlin 項目構建失敗。
  • 修改 build.gradle 文件時,輸入某個字符后要過很長一段時間才會在屏幕上顯示該字符。
  • 在一些具有大量模塊或外部依賴項的項目中,在 dex 處理期間發生構建失敗,并顯示以下錯誤消息:

    "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

  • D8 主 DEX 列表的計算方式沒有考慮到一些反射調用。

此更新還包含一些更改,這些更改使得在某些情況下從 Gradle 運行 Lint 檢查的速度更快。

3.1.1(2018 年 4 月)

這項 Android Studio 3.1 更新修復了下列錯誤:

  • 在某些情況下,在 Android Studio 3.1 中首次打開在 Android Studio 3.0 中創建的項目時,Gradle-aware Make 任務已從 Run/Debug Configurations 的 Before launch 區域中移除。因此,點擊 RunDebug 按鈕時沒有構建項目,這反過來會導致使用 Instant Run 時部署錯誤的 APK 以及崩潰等失敗情況。

    為解決此問題,Android Studio 3.1.1 會將 Gradle-aware Make 任務添加到缺少此條目的項目的運行配置中。此項修改發生在首次 Gradle 同步之后的項目加載完畢時。

  • 在調試包含文本框的布局時,如果啟用了高級性能剖析,調試器會發生崩潰。
  • 點擊 Build Variants 后,Android Studio 凍結。
  • AAR(Android 歸檔)文件被提取了兩次,一次是在 Gradle 同步過程中,另一次是在 Gradle 構建過程中。
  • 從 SVG 文件導入的一些矢量可繪制資源中缺少元素。
  • 更新了有關棄用 compile 依賴項配置的警告,并優化了有關 implementationapi 配置的指導。要詳細了解如何停止使用 compile 配置,請參閱新依賴項配置的文檔

編碼/IDE

IntelliJ 2017.3.3

核心 Android Studio IDE 已通過 2017.3.3 版本進行了更新,增加了 IntelliJ IDEA 中的相關改進。改進功能包括為集合與字符串提供了更好的控制流分析,改進了為空性推理,添加了一些快速修復功能,等等。

如需了解詳情,請參閱 IntelliJ IDEA 版本 2017.22017.3 的 JetBrains 版本說明,以及錯誤修復更新的 JetBrains 版本說明。

通過 Room 改進了 SQL 修改

使用 Room 數據庫時,您可以利用針對 SQL 修改的多項改進:

  • Query 中的代碼自動填充功能可以理解 SQL 表格(實體)、列、查詢參數、別名、聯接、子查詢和 WITH 子句。
  • SQL 語法突出顯示現在可以正常使用。
  • 您可以右鍵點擊 SQL 中的報告名稱并對其重命名,這也會重寫相應的 Java 或 Kotlin 代碼(例如,包括查詢的返回類型)。重命名在另一個方向也適用,因此重命名 Java 類或字段會重寫相應的 SQL 代碼。
  • 使用 Find usages(右鍵點擊并從上下文菜單中選擇 Find usages)時,系統會顯示 SQL 用法。
  • 要轉到 SQL 實體在 Java 或 Kotlin 代碼中的聲明,您可以在按住 Ctrl 鍵(Mac 上為 Command 鍵)的同時點擊該實體。

要了解如何將 SQL 與 Room 搭配使用,請參閱使用 Room 在本地數據庫中保存數據

數據綁定更新

此更新包括針對數據綁定的多項改進:

  • 現在,您可以將 LiveData 對象用作數據綁定表達式中的一個可觀察字段。ViewDataBinding 類現在添加了用于觀察 LiveData 對象的新 setLifecycle() 方法。

  • ObservableField 類現在可以接受其構造函數中的其他 Observable 對象。

  • 您可以預覽數據綁定類的新增量編譯器。要詳細了解這個新編譯器以及如何啟用它,請參見數據綁定編譯器 V2

    新編譯器的好處包括:

    • Android Plugin for Gradle 會先于 Java 編譯器生成 ViewBinding 類。

    • 編譯應用時,庫會保留其生成的綁定類,而不是每次都重新生成這些類。這可以大大提高多模塊項目的性能。

編譯器和 Gradle

D8 是默認的 DEX 編譯器

D8 編譯器現已默認用于生成 DEX 字節碼。

這款新的 DEX 編譯器可提供多項好處,包括:

  • Dex 速度更快
  • 降低內存使用量
  • 改進了代碼生成功能(更好的注冊表分配和更智能的字符串表格)
  • 在單步調試代碼時提供更好的調試體驗

除非您之前手動停用了 D8 編譯器,否則無需對代碼或開發工作流進行任何更改即可獲得這些好處。如果您在 gradle.properties 中將 android.enableD8 設為 false,請刪除該標記或將其設為 true

android.enableD8=true
    

如需了解詳情,請參閱新的 DEX 編譯器

增量脫糖

對于使用 Java 8 語言功能的項目,系統會默認啟用增量脫糖,這可以縮短構建時間。

脫糖可將語法糖轉換為一種可供編譯器更高效地處理的格式。

您可以通過在項目的 gradle.properties 文件中指定以下內容來停用增量脫糖:

android.enableIncrementalDesugaring=false
    

簡化了輸出窗口

Gradle Console 已替換為 Build 窗口,后者包含 Sync 和 Build 標簽。

要詳細了解如何使用經過簡化的新 Build 窗口,請參閱監控構建流程

批量更新和并發索引

現在,Gradle 同步和 IDE 索引編制流程的效率更高,從而縮短了在許多冗余索引編制操作上浪費的時間。

C++ 和 LLDB

我們在 C++ 開發的編碼、同步、構建和調試階段做出了多項質量和性能方面的改進。具體改進包括:

  • 如果您處理大型 C++ 項目,則應該會注意到在構建符號上花費的時間明顯減少。大型項目的同步時間也大大減少。

  • 通過更積極地重復使用緩存結果,改進了構建 CMake 并與之同步時的性能。

  • 為更多 C++ 數據結構添加格式轉換工具(“pretty printers”)可使 LLDB 輸出更易于閱讀。

  • LLDB 現在僅適用于 Android 4.1(API 級別 16)及更高版本。

Kotlin

Kotlin 已升級到版本 1.2.30

Android Studio 3.1 包含 Kotlin 版本 1.2.30

現在使用命令行 Lint 檢查分析 Kotlin 代碼

從命令行運行 Lint 現在可分析您的 Kotlin 類。

對于您希望運行 Lint 的每個項目,Google 的 Maven 代碼庫必須包含在頂級 build.gradle 文件中。在 Android Studio 3.0 及更高版本中創建的項目已包含 Maven 代碼庫。

性能工具

使用 Energy Profiler 對原生 C++ 進程采樣

CPU Profiler 現在包含一項默認配置,用于記錄應用的原生線程的采樣跟蹤記錄。您可以通過以下方法使用此配置:將應用部署到搭載 Android 8.0(API 級別 26)或更高版本的設備,然后從 CPU Profiler 的記錄配置下拉菜單中選擇 Sampled (Native)。然后,按照常規方法記錄和檢查跟蹤記錄

您可以通過創建記錄配置來更改默認設置,例如采樣間隔。

要切換回跟蹤 Java 線程,請選擇 Sampled (Java) 或 Instrumented (Java) 配置。

過濾 CPU 跟蹤記錄、內存分配結果和堆轉儲

CPU ProfilerMemory Profiler 具有搜索功能,可讓您通過記錄方法跟蹤、內存分配或堆轉儲來過濾結果。

要進行搜索,請點擊窗格右上角的 Filter ,輸入您的查詢,然后按 Enter。

提示:您還可以按 Ctrl + F(在 Mac 中按 Command + F)來打開搜索字段。

在 CPU Profiler 的 Flame Chart 標簽中,包含與您的搜索查詢相關的方法的調用堆棧會突出顯示并移至圖表的左側。

要詳細了解如何按方法、類或軟件包名稱過濾,請參閱記錄和檢查方法跟蹤

Network Profiler 中的“Request”標簽

Network Profiler 現在包含一個 Request 標簽,其中提供了有關選定時間軸中的網絡請求的詳細信息。在以前的版本中,Network Profiler 僅提供有關網絡響應的信息。

Network Profiler 中的線程視圖

Network Profiler 中選擇時間軸的一部分后,您可以選擇以下某個標簽,以查看有關該時間范圍內的網絡活動的更多詳細信息:

  • Connection View:提供的信息與之前版本的 Android Studio 相同,它列出了在所選時間軸部分中從您應用的所有 CPU 線程發送或接收的文件。對于每個請求,您可以檢查大小、類型、狀態和傳輸時長。
  • Thread View:顯示您的應用的每個 CPU 線程的網絡活動。此視圖可讓您檢查應用的哪些線程負責每個網絡請求。

Layout Inspector

Layout Inspector 獲得了新功能,包括以前由 Hierarchy Viewer 和 Pixel Perfect 工具提供的部分功能:

  • 用于導航和檢查布局的縮放按鈕和鍵盤快捷鍵
  • 參考網格疊加層
  • 能夠加載參考圖片并將其用作疊加層(用于將您的布局與界面模型進行比較)
  • Render Subtree Preview,以隔離復雜布局中的視圖

Layout Editor

Layout Editor 中的 Palette 已經取得了許多改進:

  • 重新組織視圖和布局的類別。
  • 為視圖和布局新增的 Common 類別,您可以使用 Favorite 命令添加至該類別。
  • 改進了視圖和布局搜索
  • 用于打開文檔以顯示特定視圖或布局元素的新命令。

您可以在 Component Tree 或設計編輯器中使用新的 Convert View 命令將視圖或布局轉換為另一種類型的視圖或布局。

您現在可以使用新的 Create a connection 按鈕(位于 Attributes 窗口頂部的視圖檢查器中)為所選視圖附近的項輕松創建約束條件。

Run 和 Instant Run

Select deployment target 對話框中 Use same selection for future launches 選項的行為現已更加一致。如果啟用了 Use same selection 選項,則 Select deployment target 對話框僅在您首次使用 Run 命令時才會打開,直到所選設備不再保持連接為止。

以搭載 Android 8.0(API 級別 26)或更高版本的設備為目標時,Instant Run 可以將更改部署到資源,而不會導致應用重啟。之所以能這么做,是因為這些資源包含在拆分 APK 中。

模擬器

要詳細了解自 Android Studio 3.0 以來模擬器中的新變化以及內容變更,請參閱版本 27.0.2版本 27.1.12 的 Android 模擬器版本說明。

主要改進包括:

  • 快速啟動快照,用于保存模擬器狀態并加快啟動速度,并且能夠使用 Save now 命令保存自定義啟動狀態。
  • 無窗口模擬器屏幕。
  • 適用于 Android 8.0(API 級別 26)、Android 8.1(API 級別 27)和 Android P 開發者預覽版的系統映像。

界面和用戶體驗方面的改進

更多提示、鍵盤快捷鍵和有用的消息

我們在 Android Studio 中的許多位置添加了提示和有用的消息疊加層。

要查看很多命令的鍵盤快捷鍵,只需將鼠標指針懸停在某個按鈕上,直到系統顯示提示。

移除了 Tools > Android

Tools > Android 菜單已被移除。之前位于此菜單下的命令已移到別處。

  • 很多命令已直接移到 Tools 菜單下。
  • Sync project with gradle files 命令已移至 File 菜單。
  • Device Monitor 命令已被移除,如下所述。

可從命令行獲得 Device Monitor

在 Android Studio 3.1 中,Device Monitor 發揮的作用不及以前。在許多情況下,Device Monitor 提供的功能現在由經過改進的新工具提供。

要了解如何從命令行調用 Device Monitor 以及 Device Monitor 提供的工具的詳情,請參閱 Device Monitor 文檔

3.0(2017 年 10 月)

Android Studio 3.0.0 是一個主要版本,包含各種新功能和改進。

macOS 用戶:如果您要更新舊版 Android Studio,則可能會遇到內容為“Some conflicts were found in the installation area”的更新錯誤對話框。只需忽略此錯誤,然后點擊 Cancel 繼續安裝。

3.0.1(2017 年 11 月)

這項 Android Studio 3.0 次要更新修正了一些常見錯誤并提升了性能。

Android Plugin for Gradle 3.0.0

新的 Android Plugin for Gradle 包含多種改進功能和新功能,但主要是改進了包含大量模塊的項目的構建性能。在將新插件與這些大型項目結合使用時,您應當會注意到以下變化:

  • 由于延遲依賴項解析,構建配置時間更短。
  • 變體感知依賴項解析僅適用于您正在構建的項目和變體。
  • 對代碼或資源應用簡單更改時,可加快增量構建速度。

此版本還包含以下變更:

要詳細了解更改內容,請參閱 Android Plugin for Gradle 版本說明

如果您已準備好升級到新插件,請參閱遷移到 Android Plugin for Gradle 3.0.0

Kotlin 支持

正如在 Google I/O 2017 大會上公布的一樣,Android 現在已正式支持 Kotlin 編程語言。因此,在此版本中,Android Studio 包含針對 Android 開發的 Kotlin 語言支持。

您可以將 Kotlin 整合到您的項目中,具體方法是:將 Java 文件轉換為 Kotlin(依次點擊 Code > Convert Java File to Kotlin File),或使用 New Project 向導創建新的啟用 Kotlin 的項目。

要開始操作,請閱讀如何將 Kotlin 添加到您的項目中

Java 8 語言功能支持

您現在可以使用某些 Java 8 語言功能,并利用使用 Java 8 構建的庫。不再需要 Jack,您需要先停用 Jack 才能使用內置到默認工具鏈中并得到改進的 Java 8 支持。

要更新您的項目以支持全新的 Java 8 語言工具鏈,請在 Project Structure 對話框(依次點擊 File > Project Structure)中將 Source Compatibility 和 Target Compatibility 更新到 1.8。要了解詳情,請閱讀如何使用 Java 8 語言功能

Android Profiler

新的 Android Profiler 取代了 Android Monitor 工具,并提供了一套新的工具來實時衡量應用的 CPU、內存和網絡使用情況。您可以執行基于樣本的方法跟蹤來記錄代碼執行時間、采集堆轉儲數據、查看內存分配,以及檢查網絡傳輸文件的詳細信息。

要打開,請依次點擊 View > Tool Windows > Android Profiler(或點擊工具欄中的 Android Profiler )。

窗口頂部的事件時間軸會顯示輕觸事件、按鍵和活動更改,以便您更清楚地了解時間軸中的其他性能事件。

從 Android Profiler 的概覽時間軸中,點擊 CPU 、MEMORY 或 NETWORK 時間軸即可訪問相應的分析器工具。

CPU Profiler

借助 CPU Profiler,您可以觸發一個樣本或檢測的 CPU 跟蹤記錄,從而分析應用的 CPU 線程使用情況。然后,您可以使用各種數據視圖和過濾器來排查 CPU 性能問題。

如需了解詳情,請參閱 CPU Profiler 指南

Memory Profiler

Memory Profiler 可幫助您識別可能會導致應用卡頓、凍結甚至崩潰的內存泄漏和內存抖動。它會顯示一個應用內存使用量的實時圖表,讓您可以捕獲堆轉儲、強制執行垃圾回收以及跟蹤內存分配。

如需了解詳情,請參閱 Memory Profiler 指南

Network Profiler

通過 Network Profiler,您可以監控應用的網絡活動,檢查每個網絡請求的負載,并鏈接回生成網絡請求的代碼。

如需了解詳情,請參閱 Network Profiler 指南

APK 性能剖析和調試

Android Studio 現在允許您對任何 APK 進行性能剖析和調試,而無需從 Android Studio 項目構建它 - 只要該 APK 已構建用于啟用調試并且您可以使用調試符號和源文件。

要開始操作,請在 Android Studio 歡迎屏幕上點擊 Profile or debug APK。或者,如果您已經打開一個項目,請在菜單欄中依次點擊 File > Profile or debug APK。這會顯示已解壓縮的 APK 文件,但不會對代碼進行反編譯。因此,為了正確添加斷點和查看堆棧跟蹤記錄,您需要附加 Java 源文件和原生調試符號。

如需了解詳情,請參閱對預構建的 APK 進行性能剖析和調試

Device File Explorer

利用新的 Device File Explorer,您可以檢查已連接設備的文件系統,并在設備和計算機之間傳輸文件。這取代了 DDMS 中提供的文件系統工具。

要打開,請依次點擊 View > Tool Windows > Device File Explorer

如需了解詳情,請參閱 Device File Explorer 指南

免安裝應用支持

對 Android 免安裝應用的全新支持允許您使用以下兩種新模塊類型在項目中創建免安裝應用:免安裝應用模塊和功能模塊(這些模塊要求您安裝 Instant Apps Development SDK)。

Android Studio 還包含一個新的模塊化重構操作,可幫助您在現有項目中添加對免安裝應用的支持。例如,如果您要重構項目以在免安裝應用功能模塊中添加一些類,請在 Project 窗口中選擇這些類,然后依次點擊 Refactor > Modularize。在隨即顯示的對話框中,選擇這些類應歸屬的模塊,然后點擊 OK

當您準備好測試免安裝應用時,您可以在運行配置啟動選項中指定免安裝應用的網址(具體方法是:依次選擇 Run > Edit Configurations,選擇您的免安裝應用模塊,然后在 Launch Options 下設置網址),以在連接的設備上構建和運行免安裝應用模塊

如需了解詳情,請參閱 Android 免安裝應用

Android Things 模塊

New Project 和 New Module 向導中的新 Android Things 模板可幫助您開始為搭載 Android 系統的物聯網設備開發應用。

如需了解詳情,請參閱如何創建 Android Things 項目

自適應圖標向導

Image Asset Studio 現在支持矢量可繪制對象,可讓您創建用于 Android 8.0 的自適應啟動器圖標,同時為舊款設備創建傳統圖標(“舊版”圖標)。

首先,右鍵點擊項目中的 res 文件夾,然后依次點擊 New > Image Asset。在 Asset Studio 窗口中,選擇 Launcher Icons (Adaptive and Legacy) 作為圖標類型。

如需了解詳情,請參閱自適應圖標

對字體資源的支持

為了支持 Android 8.0 中的新字體資源,Android Studio 添加了一個字體資源選擇器,用于將字體打包到應用中或配置項目以將字體下載到設備上(如果可用)。布局編輯器還可以在您的布局中預覽字體

要試用可下載字體,請確保您的設備或模擬器運行的是 Google Play 服務 11.2.63 版或更高版本。如需了解詳情,請參閱可下載的字體

Firebase App Indexing Assistant

Firebase Assistant 已更新,其中包含講述如何測試 App Indexing 的新教程。要打開 Assistant,請依次選擇 Tools > Firebase。然后,依次選擇 App Indexing > Test App Indexing

該教程包含用于測試公開和個人內容索引編制的新按鈕:

  • 在第 2 步中,點擊 Preview search results,驗證您的網址是否會顯示在 Google 搜索結果中。
  • 在第 3 步中,點擊 Check for errors,驗證應用中可編入索引的對象是否已添加到個人內容索引中。

App Links Assistant 已更新,包含以下新功能:

  • 為每個網址映射添加網址測試,以確保您的 intent 過濾器可處理真實的網址。

    您也可以使用下述 <tools:validation> 標記手動定義這些網址測試。

  • 使用正確的對象條目創建 Digital Asset Links 文件,以支持 Google Smart Lock,并向清單文件添加相應的 asset_statements <meta-data> 標記。

網址 intent-filter 驗證程序

Android Studio 現在支持清單文件中的一種特殊標記,該標記可讓您測試 intent 過濾器網址。這些標記與 App Links Assistant 可為您創建的標記相同。

要聲明 intent 過濾器的測試網址,請添加 <tools:validation> 元素以及對應的 <intent-filter> 元素。例如:

<activity ...>
        <intent-filter>
            ...
        </intent-filter>
        <tools:validation testUrl="https://www.example.com/recipe/1138" />
    </activity>
    

還請務必在 <manifest> 代碼中包含 xmlns:tools="http://schemas.android.com/tools"

如果其中任何一個測試網址未通過 intent 過濾器定義,則會顯示 Lint 錯誤。此類錯誤仍允許您構建調試變體,但它會破壞您的發布版本。

Layout Editor

Layout Editor 經過了更新,包含多項增強功能,其中包括:

  • 新的工具欄布局和圖標。
  • 更新了組件樹中的布局。
  • 改進了拖放視圖插入。
  • 新增了錯誤面板(在編輯器下方),其中會顯示所有問題以及修正建議(如可用)。
  • 針對使用 ConstraintLayout 進行構建的各種界面增強功能,包括:
    • 新增對創造屏障的支持。
    • 新增對創建組的支持:在工具欄中,依次選擇 Guidelines > Add Group(需要 ConstraintLayout 1.1.0 測試版 2 或更高版本)
    • 新增用于創建鏈的界面:選擇多個視圖,然后右鍵點擊并選擇 Chain

Layout Inspector

Layout Inspector 包含一些增強功能,可讓您更輕松地調試應用布局問題,包括將屬性歸入常見類別以及 View TreeProperties 窗格中的新搜索功能。

APK 分析器

您現在可以使用 apkanalyzer 工具從命令行使用 APK 分析器。

APK 分析器也經過更新,包含以下改進功能:

  • 對于使用 ProGuard 構建的 APK,您可以加載為 DEX 查看器添加功能的 ProGuard 映射文件,包括:
    • 粗體節點,指示在壓縮代碼時不應移除節點。
    • 一個用于顯示在壓縮過程中移除的節點的按鈕。
    • 一個按鈕,用于恢復樹視圖中由 ProGuard 進行模糊處理的節點的原始名稱。
  • DEX 查看器現在會顯示每個軟件包、類和方法的估計大小影響。
  • 在頂部新增了一些過濾選項,可顯示和隱藏字段和方法。
  • 在樹視圖中,未在 DEX 文件中定義的參考節點會以斜體顯示。

如需了解詳情,請參閱使用 APK 分析器分析您的構建

D8 DEX 編譯器的預覽版

Android Studio 3.0 包含一個名為 D8 的可選新 DEX 編譯器。它最終將取代 DX 編譯器,但您現在可以選擇使用新的 D8 編譯器。

DEX 編譯會直接影響應用的構建時間、.dex 文件的大小和運行時性能。與當前 DX 編譯器相比,新的 D8 編譯器的編譯速度更快,輸出的 .dex 文件更小,同時卻能保持相同乃至更出色的應用運行時性能。

要試用此功能,請在項目的 gradle.properties 文件中進行以下設置:

android.enableD8=true
    

如需了解詳情,請參閱有關 D8 編譯器的博文

Google 的 Maven 代碼庫

Android Studio 現在默認使用 Google 的 Maven 代碼庫,而不依賴于 Android SDK 管理器來獲取 Android 支持庫、Google Play 服務、Firebase 和其他依賴項的更新。這樣,您可以更輕松地使您的庫保持最新,尤其是在使用持續集成 (CI) 系統時。

現在,所有新項目都默認包含 Google Maven 代碼庫。要更新現有項目,請在頂級 build.gradle 文件的 repositories 代碼塊中添加 google()

allprojects {
        repositories {
            google()
        }
    }
    

要詳細了解 Google 的 Maven 代碼庫,請點擊此處

其他變更

  • 使用 Android Studio 進行原生調試不再支持 32 位 Windows 系統。我們選擇專注于其他平臺,因為很少有開發者使用這個平臺。如果您使用的是 32 位 Windows 系統并且打算調試原生代碼,則應繼續使用 Android Studio 2.3
  • 將基本 IDE 升級為 IntelliJ 2017.1.2,其包含 2016.32017.1 中的許多新功能,例如 Java 8 語言重構、參數提示、語義突出顯示、可拖拽的斷點、即時獲得搜索結果等等。
  • 添加了許多新的 Lint 檢查。
  • 另請參閱最新的 Android 模擬器更新

2.3(2017 年 3 月)

Android Studio 2.3.0 主要是一個問題修復和穩定版本,但它還包含許多新功能。

2.3.3(2017 年 6 月)

這是一項次要更新,添加了對 Android O(API 級別 26)的支持。

2.3.2(2017 年 4 月)

這是一項 Android Studio 2.3 次要更新,其中包含以下更改:

  • 更新了 AVD Manager,以在系統映像中支持 Google Play。
  • 修復了使用 R14 及更高版本 NDK 時的 NDK 構建問題。

另請參閱 Android 模擬器 26.0.3 的相應更新。

2.3.1(2017 年 4 月)

這是一項 Android Studio 2.3 次要更新,修復了某些實際 Android 設備無法正確使用 Instant Run 的問題(請參閱問題 #235879)。

新增內容

  • Android Studio 現在可以將 PNG、BMP、JPG 和靜態 GIF 文件轉換為 WebP 格式。WebP 是 Google 的一種既可以提供有損壓縮(像 JPEG 一樣)也可以提供透明度(像 PNG 一樣)的圖片文件格式,不過與 JPEG 或 PNG 相比,這種格式可以提供更好的壓縮。如需了解詳情,請參閱在 Android Studio 中將圖片轉換為 WebP
  • 新的 App Links Assistant 以分步向導的方式簡化了向應用添加 Android 應用鏈接的流程。Android 應用鏈接是指將用戶直接轉到 Android 應用內特定內容的 HTTP 網址。
  • Layout Editor 現在支持兩個新的 ConstraintLayout 功能:
    • 根據寬高比定義視圖大小。
    • 使用約束鏈創建打包、展開和加權線性組。
    如需了解詳情,請參閱使用 ConstraintLayout 構建自適應界面
  • Layout Editor 現在還可讓您創建喜愛的屬性列表,因此您無需點擊 View all attributes 即可訪問最常使用的屬性。
  • 使用“Vector Import”對話框 (File > New > Vector Asset) 添加材質圖標時,您現在可以按類別或圖標名稱過濾可用圖標列表。如需了解詳情,請參閱添加材質圖標
  • 新的和經過更新的注釋。方法、類和軟件包的新 @RestrictTo 注釋允許您對 API 進行限制。更新后的 @VisibleForTesting 注釋現在包含一個可選的 otherwise 參數,可讓您指定在不需要公開某個方法以用于測試時,該方法的公開范圍應該為何。Lint 使用 otherwise 選項來強制執行方法的既定公開范圍。
  • 新的 Lint 基準支持允許您使用項目當前警告集的快照作為未來檢查任務的基準,因此僅會報告新問題。通過基準快照,您可以開始使用 Lint 在出現新問題時取消構建,從而無需返回并首先解決所有現有問題。
  • 新的 Lint 檢查,包括:
    • 過時 SDK_INT 檢查:Android Studio 會移除用于檢查 SDK 版本的過時代碼。
    • Object Animator 驗證:Lint 會分析您的代碼以確保 ObjectAnimator 使用正確簽名調用具有有效參考的方法,并檢查這些方法是否使用 @Keep 注釋以防止 ProGuard 在發布版本時重命名或移除它們。
    • 不必要的項目裝飾器副本:舊版本的 RecyclerView 庫不包含分隔線裝飾器類,但在支持演示中提供了該類的一個示例。該庫的最新版本具有分隔線裝飾器類。Lint 會查找舊示例,并建議將其替換為新示例。
    • WifiManager 泄漏:在 Android 7.0(API 級別 24)之前,如果上下文不是應用上下文,則使用 Context.getSystemService() 初始化 WifiManager 會導致內存泄漏。Lint 會查找這些初始化,如果它無法確定上下文是否為應用上下文,則會建議您使用 Context.getApplicationContext() 來獲取初始化的正確上下文。
    • 改進了資源前綴:現有的 resourcePrefix Lint 檢查有許多限制。現在,您可以使用前綴配置項目(比如 android { resourcePrefix 'my_lib' }),Lint 可確保您的所有資源都使用此前綴。您可以為樣式和主題背景使用名稱變體形式。例如,對于 my_lib 前綴,您可以使用名為 MyLibThememyLibAttrmy_lib_layout 等的主題背景。
    • 切換到 WebP:此檢查可根據項目的 minSdkVersion 設置識別可轉換為 WebP 格式的圖片。關聯的快速修復可自動轉換圖片,您也可以手動將圖片轉換為 WebP
    • 不安全的 WebP:如果您的項目已包含 WebP 圖片,則此檢查會分析您的項目,以確保您的 minSdkVersion 設置足夠高,以支持所包含的圖片。要詳細了解 Android 和 Android Studio 中的 WebP 支持,請參閱哪些瀏覽器對 WebP 提供原生支持?使用 Android Studio 創建 WebP 圖片

變更

  • 一個使用 Instant Run 推送更改的單獨按鈕:現在,部署應用后,點擊 Apply Changes 即可使用 Instant Run 快速將增量更改推送到正在運行的應用。當您想可靠地推送更改并強制重啟應用時,隨時都可以使用 Run Debug 按鈕。
    • 僅在將應用部署到搭載 Android 5.0(API 級別 21)或更高版本的目標設備時,才支持 Instant Run。
    • 對于使用 CMake 或 ndk-build 鏈接到外部原生項目的項目,不再停用 Instant Run。但是,您只能使用 Instant Run 將增量更改推送到 Java 代碼,而非原生代碼。
    • 冷交換(只需點擊 Run 即可對正在運行的應用強制執行冷交換)現在更加可靠。強制執行冷交換還可以解決通知和微件界面更改未在目標設備上更新的問題。
    • 為加快應用啟動速度進行了優化。這些優化可能會影響性能剖析,因此,在對應用進行性能剖析時應該暫時停用 Instant Run
  • AVD Manager SDK Manager 按鈕現在包含在精簡導航欄以及完整的工具欄中。要使用精簡導航欄,請點擊 View 打開“View”菜單,然后確保已選中 Navigation Bar 而未選中 Toolbar

  • “Hybrid”調試器已更名為“Dual”調試器。
  • 在左側窗格“Defaults”下方的 Run/Debug Configurations 對話框中,以下運行配置名稱已更改,但行為沒有發生任何變化:
    • JUnit 名稱已更改為 Android JUnit。如果您有一個使用 JUnit 運行配置的項目,那么在您首次使用 Android Studio 打開項目時,這些配置將轉換為 Android JUnit 運行配置。系統會顯示一個對話框,通知您名稱更改。
    • Android Tests 名稱已更改為 Android Instrumentation Tests。
  • 從 2.3 版開始,GPU 調試器已從 Android Studio 中移除。GitHub 現在提供了該工具的開源獨立版本。
  • 右鍵點擊 *.gradle build 腳本后,無法再使用“Run/Debug”選項。
  • 現在,所有模板都使用 ConstraintLayout 作為默認布局。
  • Layout Editor 中的微件調色板已經過重新設計。

此版本還修復了很多問題。查看 2.3.0 中修復的所有問題。

已知問題:某些設備制造商會阻止應用在安裝到設備上后自動啟動。使用 Android Studio 2.3 將應用部署到實際設備時,此限制會破壞 Instant Run 的預期行為并導致以下錯誤輸出:Error: Not found; no service started。要避免此問題,請使用模擬器或在設備的設置中為應用啟用自動啟動功能。每個設備的操作步驟有所不同,請查看制造商提供的說明。例如,某些受影響的華碩設備需要使用自動啟動管理器將應用列入白名單。要詳細了解此問題,請參閱問題 #235879

2.2(2016 年 9 月)

2.2.3(2016 年 12 月)

這是一項 Android Studio 2.2 次要更新。其中包含針對 Gradle、核心 IDE 和 Lint 的問題修復。

重要的構建更改:

  • ProGuard 版本回滾。由于 ProGuard 5.3.1 中發現的正確性問題,我們已回滾到 ProGuard 5.2.1。我們與 ProGuard 團隊合作快速找到了解決方法,我們期望在 Android Studio 2.3 Canary 3 中向前回滾到 ProGuard 5.3.2。
  • 針對 aaptOptions IgnoreAssetsPattern 的問題修復無法正常運行(問題 224167
  • 針對為約束布局庫自動下載 Gradle 的問題修復(問題 212128
  • 針對 JDK8/Kotlin 編譯器 + dx 問題的問題修復(問題 227729

查看 2.2.3 中修復的所有問題

2.2.2(2016 年 10 月)

這是一項 Android Studio 2.2 次要更新。其中包含很多細微更改和問題修復,包括:

  • 通過 IDE 報告 Instant Run 問題時,報告現在還會包含 InstantRun 事件的 logcat 輸出。為了幫助我們改進 Instant Run,請啟用額外的日志記錄功能并報告所有問題
  • 修復了 Gradle 的許多小問題。
  • 修復了生成多個 APK 時的問題。

2.2.1(2016 年 10 月)

這是一項 Android Studio 2.2 次要更新。其中包含多項問題修復,并添加了一項新功能來啟用額外的日志記錄功能,以幫助我們排查 Instant Run 問題。為了幫助我們改進 Instant Run,請啟用額外的日志記錄功能并報告所有問題

新增內容

  • 所有新的 Layout Editor 都內置自定義工具,以支持 ConstraintLayout
  • 新的 Layout Inspector,可讓您在模擬器或設備上運行應用時檢查布局層次結構的快照。
  • 新的 Assistant 窗口,可幫助您將 Firebase 服務集成到您的應用中。
  • 新的 APK 分析器工具,可讓您檢查打包應用的內容。
  • 新的 Espresso Test Recorder 工具(目前處于測試階段),可幫助您記錄自己的互動來創建界面測試。
  • 新的構建緩存(目前是實驗性功能),可加快構建速度。
  • 新增 C/C++ 構建與 CMake 和 ndk-build 集成。將新的或現有的原生代碼編譯并構建到打包到 APK 中的庫中,并使用 lldb 進行調試。對于新項目,Android Studio 默認使用 CMake,但也支持對現有項目使用 ndk-build。要了解如何在 Android 應用中添加原生代碼,請閱讀向項目中添加 C 和 C++ 代碼。要了解如何使用 lldb 調試原生代碼,請參閱調試原生代碼
  • 新的示例瀏覽器,讓您可以在 Android Studio 中輕松查找 Google Android 示例代碼,以立即開始應用開發。
  • 新的合并的清單文件查看器,可幫助您診斷清單文件如何與項目構建變體中的應用依賴項合并。
  • Run 窗口現在包含當前運行的應用的日志消息。請注意,您可以配置 logcat 監視器顯示,但無法配置 Run 窗口。
  • 新的 Android 模擬器功能:
    • 添加了新的 Virtual Sensors 和 Cellular > Signal Strength 控件。
    • Cellular > Network type 控件添加了 LTE 選項。
    • 添加了模擬縱向滑動功能,以便使用鼠標滾輪滾動瀏覽縱向菜單。
  • 新的運行/調試配置功能:
    • Android 應用和 Android Tests 模板的 Debugger 標簽現在包含幾個新選項,用于使用 LLDB 進行調試。
    • Android 應用和 Android Tests 模板的 Profiling 標簽現在包含一個用于啟用 GPU 跟蹤的 Capture GPU Commands 選項。您可以在 GPU 調試器中顯示 GPU 跟蹤記錄(測試版功能)。
    • Android Tests 模板現在包含一個適用于 Deployment Target 的 Firebase Test Lab Device Matrix 選項。
    • 原生應用模板已棄用。如果您在項目中使用此模板,Android Studio 會自動將其轉換為 Android 應用模板。
    • Android 應用模板已更名為 Android 應用。
  • 改進了 GPU 調試器(目前處于測試階段)中的安裝、配置、性能和界面功能。
  • Android Studio 現在捆綁了 OpenJDK 8。現有項目仍使用 File > Project Structure > SDK Location 中指定的 JDK。要改為使用所捆綁的新 JDK,請依次點擊 File > Project Structure > SDK Location,然后選中 Use embedded JDK 復選框。
  • 在界面中添加了新的幫助菜單和按鈕,以便您更輕松地找到在線文檔。

變更

  • 將 IDE 代碼庫從 IntelliJ 15 更新為 IntelliJ 2016.1
  • Instant Run 現在需要安裝與目標設備 API 級別對應的平臺 SDK。
  • 如果用戶在工作資料下或以次要用戶身份運行應用,系統會自動停用 Instant Run。
  • 修復了 Instant Run 的許多可靠性問題,這些問題會使更改無法部署或導致應用崩潰:
    • 某些應用資產未部署到正在運行的應用中。(錯誤:#213454
    • 當用戶在 Instant Run 和非 Instant Run 會話(可序列化類未在其中定義 serialVersionUID)之間切換時,應用崩潰。(錯誤:#209006
    • Instant Run 不會反映樣式更改。(錯誤:#210851
    • Instant Run 會話不可靠,會導致 FileNotFoundException。(錯誤:#213083
    • 在為 KitKat 執行完全重建之前,不會反映對可繪制對象的更改。(錯誤:#21530
    • 當自定義 sourceSets 包含嵌套路徑時,Instant Run 不會反映資源更改。(錯誤:#219145
    • 如果已更改的類包含具有枚舉值的注釋,則熱交換和冷交換不起作用。(錯誤:#209047
    • Instant Run 不會反映對注釋數據的更改。(錯誤:#210089
    • 如果您在 IDE 外部進行更改,則 Instant Run 不會選擇代碼更改。(錯誤:#213205
    • 由于安全令牌不匹配,Instant Run 會話不可靠。(錯誤:#211989
    • 對于無法正確支持 run-as 的設備,冷交換會失敗。(錯誤:#210875
    • 應用在 Instant Run 重啟后崩潰。(錯誤:#219744
    • 從 Instant Run 切換到 Instant Debug 時觀察到 ClassNotFoundException。(錯誤:#215805
  • 改進了 Android Studio 中 Gradle 同步的性能,尤其是對于大型項目。
  • 縮短了使用新的應用打包代碼進行完整構建和增量構建的構建時間。
  • 改進了 Jack 編譯器的性能和功能,包括對注釋處理器和 dexing-in-process 的支持。要了解詳情,請參閱 Android plugin for Gradle 2.2.0 版本說明
  • 從 AVD 管理器中移除了 Scale AVD 屬性。
  • Android 模擬器 -port 和 -ports 命令行選項現可報告模擬器實例使用的端口和序列號,并在您提供的值出現問題時發出警告。
  • 改進了“Create New Class”對話框和相應的文件模板。注意:如果您之前自定義了 AnnotationTypeClassEnumInterfaceSingleton 文件模板,則需要修改您的模板以便與新模板一致,否則您將無法使用 Create New Class 對話框中的新字段。
  • 改進了 Vector Asset Studio 界面并添加了對 Adobe Photoshop Document (PSD) 文件的支持。
  • 改進了 Image Asset Studio 界面。
  • 改進了 Theme Editor 的資源選擇器。
  • 修復了 Android Studio 中的內存泄漏和總體內存使用量減少的問題。
  • SDK 管理器中添加了 Background 按鈕,以便您可以返回工作并在后臺安裝軟件包。
  • 改進了無障礙功能,包括對屏幕閱讀器和鍵盤導航的支持。
  • 代碼分析得到增強,其中包含適用于 Java 8 語言的代碼質量檢查和更多的跨文件分析。
  • 幾個工具欄圖標發生了更改。

2.1(2016 年 4 月)

此更新中的主要更改可提供對使用 Android N Preview 進行開發的支持。

2.1.3(2016 年 8 月)

此項更新增加了與 Gradle 2.14.1 的兼容性,其中包括性能改進、新功能和重要的安全修復程序。如需了解詳情,請參閱 Gradle 版本說明

默認情況下,Android Studio 2.1.3 中的新項目使用 Gradle 2.14.1。對于現有項目,IDE 會提示您升級到 Gradle 2.14.1 和 Android plugin for Gradle 2.1.3,這在使用 Gradle 2.14.1 或更高版本時是必需的。

2.1.2(2016 年 6 月)

此更新包含多項細微更改和問題修復:

  • Instant Run 更新和問題修復。
  • 改進了 LLDB 性能和崩潰通知。
  • 修復了 Android Studio 2.1.1 安全更新中會導致 git rebase 失敗的回歸問題。

2.1.1(2016 年 5 月)

安全版本更新。

Android N 平臺增加了對 Java 8 語言功能的支持,這些功能需要一個名為 Jack 的新實驗性編譯器。最新版本的 Jack 目前僅在 Android Studio 2.1 中受支持。因此,如果您要使用 Java 8 語言功能,則需使用 Android Studio 2.1 構建應用。

注意:在您啟用 Jack 編譯器時,Instant Run 處于停用狀態,因為這二者當前不兼容。

盡管 Android Studio 2.1 現已穩定運行,但 Jack 編譯器仍處于試驗階段,您必須使用 build.gradle 文件中的 jackOptions 屬性來啟用它。

除了為支持 N Preview 所做的更改外,Android Studio 2.1 還包含一些次要問題修復和以下增強功能:

  • 現在,當您使用 N 設備或模擬器并選擇 Native 調試程序模式(在運行/調試配置對應的 Debugger 標簽中),Java-aware C++ 調試程序默認處于啟用狀態。

對于其他構建增強功能(包括增量 Java 編譯和 dexing-in-process),請將 Android plugin for Gradle 更新到版本 2.1.0。

2.0(2016 年 4 月)

注意:如果您要為 N Developer Preview 開發應用,則應使用 Android Studio 2.1 Preview。Android Studio 2.0 無法支持定位到 N Preview 所需的全部功能。要了解詳情,請參閱如何為 N Preview 正確設置開發者環境

Instant Run

  • Android Studio 現在部署整潔構建的速度比以前更快。此外,將增量代碼更改推送到模擬器或實際設備幾乎是即時的。您可以查看更新,而無需重新部署新的調試版;在很多情況下,無需重啟應用。
  • Instant Run 支持將以下更改推送到正在運行的應用:
    • 對現有實例方法或靜態方法的實現所做的更改
    • 對現有應用資源的更改
    • 對結構代碼的更改,例如方法簽名或靜態字段(需要搭載 API 級別 21 或更高版本的目標設備)。
  • 要詳細了解 Instant Run,請閱讀相關文檔。

    注意:僅在您部署調試構建變體、使用 Android plugin for Gradle version 2.0.0 或更高版本,或針對 minSdkVersion 15 或更高版本配置應用的模塊級 build.gradle 文件時,Instant Run 才受支持。為獲得最佳性能,請針對 minSdkVersion 21 或更高版本配置應用。

Lint 新增的內容

  • 使用 @IntDef 注釋的整數檢查 switch 語句,以確保處理所有常量。要快速添加所有缺少的語句,請使用 intent 操作下拉菜單,然后選擇 Add Missing @IntDef Constants
  • 用于使用字符串插值在 build.gradle 文件中插入版本號的錯誤嘗試的標記。
  • 用于擴展 Fragment 類的匿名類的標記。
  • 用于不安全位置(例如 res/asset/ 文件夾)中的原生代碼的標記。此標記會建議將原生代碼存儲在 libs/ 文件夾中,然后在安裝時將該代碼安全打包到應用的 data/app-lib/ 文件夾中。AOSP:#169950
  • 用于對 Runtime.load()System.load() 調用的不安全調用的標記。AOSP:#179980
  • 通過從菜單欄中依次選擇 Refactor > Remove Unused Resources 來查找和移除所有未使用的資源。未使用資源檢測現在支持的資源僅限于由未使用的資源、原始文件中的參考(例如 .html 圖片參考、以及 Gradle 資源壓縮器使用的 tools:keeptools:discard 屬性)所引用的資源,同時考慮非活動源集(例如其他構建類型中使用的資源)以及正確處理靜態字段導入。
  • 檢查 minSdkVersion 的所有目標平臺是否支持隱式 API 引用。
  • 標記 RecyclerViewParcelable 的不當使用。
  • 現在,系統還會針對 int 數組和 varargs 對 @IntDef@IntRange@Size 檢查進行檢查。

其他方面的改進

  • 針對 Android 模擬器 2.0 進行了優化,它比以前速度更快,支持更廣泛的虛擬設備,并具有經過顯著改進的界面。要詳細了解新模擬器,請閱讀 SDK 工具版本說明
  • Android 虛擬設備管理器的改進:
    • 系統映像現已歸入以下標簽:“Recommended”、“x86”和“Other”。
    • 在高級設置下,您可以啟用多核支持并指定模擬器可以使用的核心數量。
    • 在高級設置下,您可以通過選擇以下選項之一來確定在模擬器上呈現圖形的方式:
      • 硬件:使用計算機顯卡更快地渲染。
      • 軟件:使用基于軟件的渲染。
      • 自動:讓模擬器確定最佳選項。此選項為默認設置。
  • 通過在構建應用之前指定部署目標縮短了 AAPT 封裝時間。這樣,Android Studio 就可以僅封裝指定設備所需的資源,從而提高了效率。
  • 增加了 Cloud Test Lab 集成,以提供按需應用測試以及便捷、可擴展的云服務。詳細了解如何將 Cloud Test Lab 與 Android Studio 搭配使用
  • 添加了新 GPU 調試器的預覽版。對于圖形密集型應用,您現在可以可視化地單步調試 OpenGL ES 代碼,以優化您的應用或游戲。
  • 添加了 Google App Indexing Test。為您的應用添加了對網址、應用索引和搜索功能的支持,以協助您提升應用流量,發現最常用的應用內容,以及吸引新用戶。在 Android Studio 中測試并驗證應用中的網址。請參閱 Android Studio 中的支持網址和 App Indexing
  • 最新的 IntelliJ 15 版本升級,包括經過改進的代碼分析和性能。有關新功能和增強功能的完整說明,請參閱 IntelliJ 更新內容
  • 現在,XML 編輯器自動填充功能可在填充屬性時添加引號。要檢查此選項是否已啟用,請打開 SettingPreferences 對話框,依次轉到 Editor > General > Smart Keys,然后選中 Add quotes for attribute value on attribute completion 旁邊的復選框。問題:195113
  • XML 編輯器現在支持自動填充數據綁定表達式。

舊版本

?