較舊版本

以下提供 Android Studio 3.6 以下版本及 Android Gradle 外掛程式 3.6.0 以下版本的版本資訊。

Android Studio 較舊版本

3.6 版 (2020 年 2 月)

Android Studio 3.6 版是主要版本,其中包含多項新功能和改善項目。

在此也感謝所有曾為這個版本付出心力的社群貢獻者

3.6.3 版 (2020 年 4 月)

這個次要更新版本修正了多項錯誤。如要查看重要錯誤修正清單,請參閱版本更新網誌上的相關文章。

3.6.2 版 (2020 年 3 月)

這個次要更新版本修正了多項錯誤。如要查看重要錯誤修正清單,請參閱版本更新網誌上的相關文章。

3.6.1 版 (2020 年 2 月)

這個次要更新版本修正了多項錯誤。如要查看重要錯誤修正清單,請參閱版本更新網誌上的相關文章。

設計工具

這個版本的 Android Studio 提供幾項設計工具更新,包括版面配置編輯器和資源管理工具。

分割檢視畫面和放大設計編輯器

分割檢視畫面同時顯示設計和文字檢視區塊

這個版本對視覺設計編輯器進行了以下幾點更新:

  • 設計編輯器 (例如版面配置編輯器和 Navigation 編輯器) 現在提供「Split」檢視畫面,可讓您同時查看 UI 的「Design」和「Code」檢視區塊。在編輯器視窗的右上角,現在有三個用來切換檢視選項的按鈕 查看圖示

    • 如要啟用分割檢視畫面,請按一下「Split」圖示 分割檢視圖示
    • 如要啟用 XML 來源檢視畫面,請按一下「Source」圖示 來源檢視圖示
    • 如要啟用設計檢視畫面,請按一下「Design」圖示 設計檢視畫面圖示
  • 設計編輯器中的縮放及平移控制項已移至編輯器視窗右下角的浮動式面板。

詳情請參閱「使用版面配置編輯器打造 UI」一文。

顏色挑選器資源分頁

當您在 XML 或設計工具中使用顏色挑選器時,IDE 現在會為您填入顏色資源值,協助您快速更新應用程式的顏色值。

填入顏色值的顏色挑選器

Resource Manager

Resource Manager 包含下列更新內容:

  • Resource Manager 現在支援大多數的資源類型。
  • 現在 Resource Manager 會在搜尋資源時,顯示來自所有專案模組的結果。在先前版本中,搜尋只會傳回來自所選模組的結果。
  • 篩選器按鈕可讓您查看本機相依模組、外部程式庫和 Android 架構的資源。您也可以使用篩選器顯示主題屬性。
  • 您可以在匯入過程中重新命名資源:只要點選資源上方的文字方塊即可操作。

詳情請參閱「使用 Resource Manager 管理應用程式的 UI 資源」一文。

Android Gradle 外掛程式更新項目

最新版本的 Android Gradle 外掛程式包含許多更新項目,包括建構速度的最佳化功能,以及 Maven 發布外掛程式和檢視區塊繫結的支援機制。詳情請參閱完整版本資訊

檢視區塊繫結

檢視區塊繫結可為每個 XML 版面配置檔案產生繫結類別,讓您更輕鬆地編寫與檢視區塊互動的程式碼。這些類別包含所有檢視區塊 (在對應的版面配置中有 ID 的檢視區塊) 的直接參照內容。

由於檢視區塊繫結會取代 findViewById(),因此可避免無效檢視區塊 ID 造成空值指標例外狀況。

如要啟用檢視區塊繫結,您必須使用 Android Gradle 外掛程式 3.6.0 以上版本,並在每個模組的 build.gradle 檔案中加入以下內容:

Groovy

  android {
      buildFeatures.viewBinding = true
  }
  

Kotlin

  android {
      buildFeatures.viewBinding = true
  }
  

套用變更

您現在可以在新增類別後,按一下「Apply Code Changes」或「Apply Changes and Restart Activity」,將變更的程式碼部署至執行中的應用程式。

如要進一步瞭解這兩項操作的差異,請參閱「套用變更」。

用於啟用免安裝應用程式支援功能的重構選單選項

建立應用程式專案後,您現在隨時可以為基本模組啟用免安裝即用功能,方法如下:

  1. 從選單列中依序選取「View」>「Tool Windows」>「Project」,開啟「Project」面板。
  2. 在基本模組 (名稱通常為「app」) 上按一下滑鼠右鍵,然後依序選取「Refactor」>「Enable Instant Apps Support」
  3. 在隨即顯示的對話方塊中,從下拉式選單中選取基本模組。
  4. 按一下「OK」

注意:透過「Create New Project」精靈為應用程式基本模組啟用免安裝即用功能的選項已移除。

詳情請參閱「Google Play 免安裝技術總覽」一文。

在 APK 分析工具中將類別和方法位元碼去模糊化

使用 APK 分析工具檢查 DEX 檔案時,您可以按照以下步驟將類別和方法位元碼去模糊化:

  1. 在選單列中,依序選取「Build」>「Analyze APK」
  2. 在畫面上出現的對話方塊中,找出並選取要檢查的 APK。
  3. 按一下「Open」。
  4. 在 APK 分析工具中,選取要檢查的 DEX 檔案。
  5. 在 DEX 檔案檢視器中,為要分析的 APK 載入 ProGuard 對應檔
  6. 在要檢查的類別或方法上按一下滑鼠右鍵,然後選取「Show bytecode」

原生工具

下列更新支援 Android Studio 中的原生 (C/C++) 開發作業。

支援 Kotlin

下列 Android Studio 的 NDK 功能原先是透過 Java 提供支援,現在也可透過 Kotlin 使用:

  • 從 JNI 宣告項目前往 C/C++ 中的對應實作函式。如要查看這項對應,請在受管理的原始碼檔案中,將滑鼠游標懸停在行數附近的 C 或 C++ 項目標記上。

  • 自動建立 JNI 宣告項目的虛設常式實作函式。請先定義 JNI 宣告項目,然後在 C/C++ 檔案中輸入「jni」或方法名稱來啟用這項功能。

  • 系統會在原始碼中,將未使用的原生實作函式醒目顯示為警告。缺少實作的 JNI 宣告項目也會醒目顯示為錯誤。

  • 當您重新命名 (重構) 原生實作函式時,系統會更新所有對應的 JNI 宣告項目。您可以重新命名 JNI 宣告項目,藉此更新原生實作函式。

  • 檢查隱式繫結 JNI 實作的簽章。

其他 JNI 改善項目

您現在可以在 Android Studio 的程式碼編輯器中享有更流暢的 JNI 開發工作流程,包括使用更完善的類型提示、自動完成、檢查和程式碼重構功能。

適用於原生資料庫的 APK 重新載入功能 {:#3.6-reload-apk}

當專案中的 APK 在 IDE 外部更新時,您不再需要建立新專案。Android Studio 會偵測 APK 中的變更,並提供重新匯入的選項。

附加僅以 Kotlin 編寫的 APK 來源

現在當您分析預先建構的 APK 並進行偵錯時,可以附加僅以 Kotlin 編寫的外部 APK 來源。詳情請參閱「附加 Kotlin/Java 來源」。

記憶體分析器中的記憶體流失偵測功能

在記憶體分析器中分析記憶體快照資料時,現在可篩選 Android Studio 認為可能代表應用程式中的 ActivityFragment 執行個體導致記憶體流失的分析資料。

這項篩選條件會顯示的資料類型包括:

  • 已遭刪除但仍受參照的 Activity 執行個體。
  • 不含有效 FragmentManager 但仍受參照的 Fragment 執行個體。

附加僅以 Kotlin 編寫的 APK 來源

現在當您分析預先建構的 APK 並進行偵錯時,可以附加僅以 Kotlin 編寫的外部 APK 來源。詳情請參閱「附加 Kotlin/Java 來源」。

記憶體分析器中的記憶體流失偵測功能

在記憶體分析器中分析記憶體快照資料時,現在可篩選 Android Studio 認為可能代表應用程式中的 ActivityFragment 執行個體導致記憶體流失的分析資料。

這項篩選條件會顯示的資料類型包括:

  • 已遭刪除但仍受參照的 Activity 執行個體。
  • 不含有效 FragmentManager 但仍受參照的 Fragment 執行個體。

在某些情況下,這項篩選條件可能會產生誤判結果,例如下列情況:

  • Fragment 已建立但尚未使用。
  • Fragment 已快取,但不屬於 FragmentTransaction

如要使用這項功能,請先擷取記憶體快照資料,或將記憶體快照資料檔案匯入至 Android Studio。如要顯示可能導致記憶體流失的片段和活動,請在記憶體分析器的記憶體快照資料窗格中,勾選「Activity/Fragment Leaks」核取方塊。

分析器:記憶體流失情形偵測功能

篩選記憶體快照資料,掌握記憶體流失情形。

Android Emulator

Android Studio 3.6 版可協助您利用 Android Emulator 29.2.7 以上版本中的多項更新內容,詳情請見下方說明。

改善位置支援功能

Android Emulator 29.2.7 以上版本針對 GPS 座標和路徑資訊模擬功能提供額外支援。開啟 Android Emulator 的「Extended controls」時,「Location」分頁中的選項現在會分別列在「Single points」和「Routes」分頁中。

Single points

您可以在「Single points」分頁中使用 Google 地圖 WebView 尋找搜尋點,就像透過手機或瀏覽器使用 Google 地圖一樣。在地圖中搜尋或點選某個地點後,只要選取靠近地圖底部的「Save point」即可儲存該地點。所有已儲存的地點都會列在「Extended Controls」視窗的右側。

如要將 Android Emulator 的位置設為您在地圖上選取的地點,請按一下「Extended controls」視窗右下方附近的「Set location」按鈕。

Android Emulator「Extended controls」中的「Single points」分頁。

Routes

與「Single points」分頁類似,「Routes」分頁會提供 Google 地圖 WebView,可用來在兩個以上的地點之間建立路線。如要建立並儲存路線,請按照下列步驟操作:

  1. 在地圖檢視中,使用文字欄位搜尋路線中的第一個目的地。
  2. 在搜尋結果中選取該地點。
  3. 選取「Navigate」按鈕。
  4. 在地圖上選取路線的起點。
  5. (選用) 點選「Add destination」,在路線中加入其他停靠站。
  6. 在地圖檢視中按一下「Save route」即可儲存路線。
  7. 指定路線名稱,然後按一下「Save」

如要讓 Android Emulator 模擬您儲存的路線,請從「Saved routes」清單中選取這個路線,然後按一下靠近「Extended controls」視窗右下方的「Play route」。如要停止模擬,請按一下「Stop route」

Android Emulator「Extended controls」中的「Routes」分頁。

如要讓 Android Emulator 持續模擬指定路線,請將「Repeat playback」旁的切換按鈕設為開啟。如要變更 Android Emulator 模擬指定路線的速度,請從「Playback speed」下拉式選單中選取所需選項。

多螢幕支援功能

Android Emulator 現在可讓您將應用程式部署到多個螢幕。這項功能支援可自訂螢幕大小,並協助您測試支援多視窗模式多螢幕的應用程式。在虛擬裝置運作時,您最多可以新增兩個額外的螢幕,步驟如下:

  1. 開啟「Extended controls」並前往「Displays」分頁。

  2. 按一下「Add secondary display」即可新增其他螢幕。

  3. 在「Secondary displays」下方的下拉式選單中,執行下列其中一項操作:

  4. 選取其中一個預設顯示比例

  5. 選取「custom」,然後設定自訂螢幕的「height」、「width」和「dpi」

  6. (選用) 按一下「Add secondary display」即可新增第三個螢幕。

  7. 按一下「Apply changes」,將指定螢幕新增至執行中的虛擬裝置。

在 Android Emulator「Extended Controls」的「Display」分頁中新增多個螢幕。

適用於 Android Automotive OS 的全新虛擬裝置和專案範本

現在使用 Android Studio 建立新專案時,可以在「Create New Project」精靈的「Automotive」分頁中選擇下列任一範本:「No Activity」、「Media service」和「Messaging service」。如要讓現有專案支援 Android Automotive 裝置,請在選單列中依序選取「File」>「New」>「New Module」,然後選取「Automotive Module」。接著,「Create New Module」精靈會引導您使用其中一個 Android Automotive 專案範本建立新模組。

選取 Android Automotive 專案範本。

此外,您現在可以為 Android Automotive OS 裝置建立 Android 虛擬裝置 (AVD),方法是在「Virtual Device Configuration」精靈的「Automotive」分頁中選取下列其中一個選項:

  1. Polestar 2:建立可模擬 Polestar 2 車用運算主機的 AVD。
  2. Automotive (1024p landscape):針對一般 1024 x 768 px 的 Android Automotive 車用運算主機建立 AVD。

選取 Android Automotive 虛擬裝置。

支援續傳的 SDK 下載作業

現在使用 SDK Manager 下載 SDK 元件和工具時,如果因故中斷下載 (例如網路不通),Android Studio 可讓您從中斷處接續下載,無需從頭開始。如果是在網路連線不穩定時下載大型檔案 (例如 Android Emulator 或系統映像檔),這項強化功能特別實用。

此外,如果有在背景執行的 SDK 下載工作,您現在可以使用狀態列中的控制項暫停或繼續下載作業。

狀態列顯示背景下載工作,並提供新的控制項讓您暫停或繼續下載作業。

狀態列顯示背景下載工作,並提供新的控制項讓您暫停或繼續下載作業。

Win32 已淘汰

我們已於 2019 年 12 月後停止更新 Windows 32 位元版本的 Android Studio,並自 2020 年 12 月起停止提供支援。您可以繼續使用 Android Studio。不過,如要取得更新項目,您必須將工作站升級至 Windows 64 位元版本。

詳情請參閱 Windows 32 位元版淘汰項目網誌

用於最佳化 Gradle 同步處理時間的全新選項

過往的 Android Studio 版本會在 Gradle 同步處理期間擷取完整的 Gradle 工作清單。如果是大型專案,這項工作清單擷取作業可能會導致同步處理速度變慢。

如要提升 Gradle 同步處理作業的效能,請依序前往「File」>「Settings」>「Experimental」,然後選取「Do not build Gradle task list during Gradle sync」。

啟用這個選項後,Android Studio 就不會在同步處理期間建構工作清單,讓 Gradle 同步處理作業能更快完成,進而提升 UI 回應速度。請注意,如果 IDE 略過工作清單建構程序,Gradle 面板中的工作清單會顯示空白,且建構檔案中的工作名稱自動完成功能也無法運作。

新的 Gradle 離線模式切換位置

如要啟用或停用 Gradle 離線模式,請先在選單列中依序選取「View」>「Tool Windows」>「Gradle」,接著在「Gradle」視窗頂端附近,按一下「Toggle Offline Mode」圖示 Gradle 面板中的 Gradle 離線模式按鈕。

IntelliJ IDEA 2019.2 版

核心 Android Studio IDE 已更新,可提供 IntelliJ IDEA 2019.2 版的改善項目。

如要進一步瞭解 2019.2 版包含的其他 IntelliJ 版本改善項目,請參閱以下頁面:

社群貢獻者

感謝曾協助我們找出錯誤和其他 Android Studio 3.6 版改善方式的所有社群貢獻者。我們尤其想感謝以下這些回報錯誤的貢獻者:

  • Albert Lo
  • Alexey Rott
  • Andrea Leganza
  • Benedikt Kolb
  • César Puerta
  • Curtis Kroetsch
  • Damian Wieczorek
  • Dan Lew
  • David Burström
  • Deepanshu
  • Egor Andreevici
  • Eli Graber
  • Emin Kokalari
  • Evan Tatarka
  • Frantisek Nagy
  • Greg Moens
  • Hannes Achleitner
  • Hans Petter Eide
  • Henning Bunk
  • Hugo Visser
  • Igor Escodro
  • Iñaki Villar
  • Javentira Lienata
  • Joe Rogers
  • Kristoffer Danielsson
  • Liran Barsisa
  • Louis CAD
  • Lóránt Pintér
  • Łukasz Wasylkowski
  • Luke Fielke
  • Malvin Sutanto
  • Masatoshi Kubode
  • Mathew Winters
  • Michael Bailey
  • Michał Górny
  • Mihai Neacsu
  • Mike Scamell
  • Monte Creasor
  • Nelson Osacky
  • Nelson Osacky
  • Nick Firmani
  • Nicklas Ansman Giertz
  • Niclas Kron
  • Nicolás Lichtmaier
  • Niek Haarman
  • Niels van Hove
  • Niklas Baudy
  • Renato Goncalves
  • Roar Grønmo
  • Ruslan Baratov
  • Sinan Kozak
  • Slawomir Czerwinski
  • Stefan Wolf
  • Stephen D'Amico
  • Tao Wang
  • Tomas Chladek
  • Tomáš Procházka
  • Tony Robalik
  • Torbjørn Sørli
  • Warren He
  • Yenchi Lin
  • Zac Sweers
  • 3.5 版 (2019 年 8 月)

    Android Studio 3.5 版是主要版本,也是 Project Marble 的成果。Project Marble 計畫是從 Android Studio 3.3 版開始進行,至今涵蓋多個版本,主要著重於改善 IDE 的三大面向:系統健康狀態功能改善和錯誤修正。

    如要進一步瞭解相關資訊和其他 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 如果偵測到提高 OS 分配給 Android Studio 程序 (例如核心 IDE、Gradle Daemon 和 Kotlin Daemon) 的 RAM 上限能提升執行效能,會向您發出通知。您可以點選通知中的動作連結接受建議設定,也可以手動調整這些設定,方法是依序選取「File」>「Settings」(在 macOS 應依序選取「Android Studio」>「Preferences」),然後依序前往「Appearance & Behavior」>「System Settings」找出「Memory Settings」部分。詳情請參閱「堆積大小上限」一文。

    關於建議記憶體設定的通知。

    關於建議記憶體設定的通知。

    記憶體用量報表

    有時您很難重現及回報 Android Studio 中的記憶體問題。為協助解決這個問題,Android Studio 可讓您產生記憶體用量報表,只要從選單列中依序點選「Help」>「Analyze Memory Usage」即可。如果您選擇這麼做,IDE 會先在本機清除資料中的個人資訊,再詢問您是否要將資料傳送給 Android Studio 團隊,讓他們協助找出記憶體問題的來源。詳情請參閱「執行記憶體用量報表」。

    記憶體用量報表。

    記憶體用量報表。

    Windows:防毒檔案 I/O 最佳化

    Android Studio 現在會自動檢查特定專案目錄是否排除在即時防毒掃描範圍以外。如果可以進行調整來提升建構效能,Android Studio 會通知您,並說明如何執行防毒軟體最佳設定。詳情請參閱「將防毒軟體對建構速度的影響降至最低」。

    Project Marble:功能改善

    本節說明 Android Studio 3.5 版中以改進現有功能為主的變更內容。

    套用變更

    「套用變更」功能可讓您將程式碼和資源變更推送到執行中的應用程式,而不必重新啟動應用程式,在某些情況下甚至不必重新啟動目前的活動。套用變更導入了保留應用程式狀態的全新做法。與會重新編寫 APK 位元碼的立即執行功能不同,套用變更會利用 Android 8.0 (API 級別 26) 以上版本支援的執行階段檢測功能,即時重新定義類別。

    詳情請參閱「套用變更」一文。

    「Apply changes」工具列按鈕。

    「Apply changes」工具列按鈕。

    應用程式部署流程

    IDE 提供新的下拉式選單,可讓您快速選取要部署應用程式的裝置。您還可透過這個選單提供的新選項,同時在多部裝置上執行應用程式。

    目標裝置下拉式選單。

    目標裝置下拉式選單。

    改善 Gradle 同步處理和快取偵測功能

    IDE 現在可準確偵測 Gradle 為了降低硬碟用量而定期清除建構快取的情形。在先前版本中,這個狀態會導致 IDE 回報缺少依附元件,並造成 Gradle 同步處理失敗。現在,IDE 會直接視需要下載依附元件,確保 Gradle 同步處理作業能順利完成。

    改善建構錯誤輸出

    「Build」「Build」視窗圖示 視窗現在有更優異的錯誤回報功能,包括加入相關檔案連結,以及回報錯誤的對應行號。您可以在下列建構程序使用:

    • AAPT 編譯和連結
    • R8 和 ProGuard
    • Dex 處理
    • 資源合併
    • XML 檔案分析
    • Javac、Kotlinc 及 CMake 編譯

    專案升級項目

    我們改善了使用者的更新體驗,提供更多相關資訊和操作來協助您更新 IDE 和 Android Gradle 外掛程式。舉例來說,更新時會有更多同步處理和建構錯誤訊息,當中提供相關操作,協助您降低錯誤帶來的影響。

    請注意,您可以單獨更新 IDE,不必同時更新 Android Gradle 外掛程式等其他元件。這樣一來,只要有新版本推出,您就可以放心立即更新 IDE,之後再更新其他元件即可。

    版面配置編輯器

    Android Studio 3.5 版改善了版面配置的呈現、管理和互動方式。

    ConstraintLayout 搭配使用時,「Attributes」面板中新增的「Constraints」部分會列出所選 UI 元件的限制關係。只要從設計介面或限制清單中選取特定限制,即可同時在這兩個區域醒目顯示該項限制。

    所選 UI 元素的限制關係。

    所選 UI 元素的限制關係。

    同樣地,現在只要選取特定限制並按下 Delete 鍵,即可將其刪除。您也可以按住 Control 鍵 (如果使用 macOS,則按住 Command 鍵),然後點選限制錨點來刪除限制。請注意,按住 ControlCommand 鍵並將滑鼠游標懸停在錨點上時,所有相關聯的限制都會變成紅色,表示可以點選刪除。

    選取特定檢視時,只要在「Attributes」面板的「Constraint Widget」部分中點選任一「+」圖示,即可建立限制,如下圖所示。當您建立新限制時,版面配置編輯器現在會選取並醒目顯示該限制,為剛剛新增的限制提供立即的視覺回饋。

    說明如何使用限制小工具建立限制的動畫。

    使用限制小工具建立限制。

    建立限制時,版面配置編輯器現在只會顯示可限制的錨點。在先前版本中,版面配置編輯器會在所有檢視中醒目顯示所有錨點 (無論是否能加以限制)。此外,現在會有一個藍色的重疊元素醒目顯示限制目標。如果您想建立限制的目標元件與其他元件重疊,這項醒目顯示功能會格外實用。

    說明如何在 Android Studio 3.4 版中為重疊元件建立限制的動畫。

    在 Android Studio 3.4 版中為重疊元件建立限制。

    說明如何在 Android Studio 3.5 版中為重疊元件建立限制的動畫。

    在 Android Studio 3.5 版中為重疊元件建立限制。

    除了上述更新,Android Studio 3.5 版的版面配置編輯器還提供下列改善項目:

    • 「Constraint Widget」和預設邊界下拉式選單現在可讓您使用邊界的尺寸資源。
    • 在版面配置編輯器工具列中,用於決定設計介面大小的裝置清單已經更新。此外,調整大小時的貼齊行為也有所改善,且設計介面現在一律會顯示大小調整控點。調整新重疊元素的大小時,會顯示常用裝置尺寸。
    • 版面配置編輯器提供新的色彩配置,可提高一致性並降低不同元件、文字和限制之間的對比。
    • 過去某些元件無法顯示文字,而現在藍圖模式針對這類元件提供文字支援。

    如要進一步瞭解這些變更,請參閱「Android Studio Project Marble:版面配置編輯器」。

    資料繫結

    除了為資料繫結新增漸進式註解處理支援功能之外,IDE 也改善了在 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。

    支援 ChromeOS

    Android Studio 現在正式支援 ChromeOS 裝置,例如 HP Chromebook x360 14、Acer Chromebook 13/Spin 13 等,詳情請參閱系統需求。請先在相容的 ChromeOS 裝置上下載 Android Studio,然後按照安裝指示操作。

    注意:ChromeOS 版的 Android Studio 目前僅支援將應用程式部署至已連結的硬體裝置。詳情請參閱「在硬體裝置上執行應用程式」。

    功能模組的條件式提供功能

    條件式提供功能可讓您設定特定裝置設定需求,讓系統在符合條件的情況下,於安裝應用程式時自動下載功能模組。舉例來說,您可以設定提供擴增實境 (AR) 功能的功能模組,並讓系統只在裝置支援 AR 的情況下,於安裝應用程式時下載該功能模組。

    這項提供機制目前可讓您根據下列裝置設定,控制應用程式安裝時的模組下載行為:

    • 裝置硬體和軟體功能,包括 OpenGL ES 版本
    • 使用者的國家/地區
    • API 級別

    如果裝置不符合您指定的所有需求,系統就不會在安裝應用程式時下載該模組。不過,應用程式日後可以使用 Play Core 程式庫要求隨選下載該模組。詳情請參閱「設定條件式提供功能」一文。

    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 Beta 版的裝置時,系統會停用分析功能。

    • 使用資料繫結程式庫時,LiveDataListener.onChanged() 可能會因 NPE 而導致執行失敗。Android Studio 3.4.1 版會修正這個問題,且 Android Studio 3.5 最新的預先發布版已提供相關修正內容。詳情請參閱問題 #122066788

    IntelliJ IDEA 2018.3.4 版

    核心 Android Studio IDE 已更新,可提供 IntelliJ IDEA 2018.3.4 版的改善項目。

    Android Gradle 外掛程式 3.4.0 版更新

    如要瞭解 Android Gradle 外掛程式 3.4.0 版的新功能,請參閱版本資訊

    全新「Project Structure」對話方塊

    全新的「Project Structure」對話方塊 (PSD) 可讓您輕鬆更新依附元件及設定專案的各個面向,例如模組、建構變化版本、簽署設定和建構變數。

    如要開啟 PSD,可以從選單列中依序選取「File」>「Project Structure」,也可以在 Windows 和 Linux 上按下 Ctrl+Shift+Alt+S 鍵,或在 macOS 上按下 Command+; (分號) 鍵。以下說明 PSD 的一些全新和更新部分。

    變數

    PSD 新增的變數部分可讓您建立及管理建構變數,例如用於讓專案中依附元件版本號碼保持一致的變數。

    • 快速查看及編輯專案 Gradle 建構指令碼中現有的建構變數。
    • 直接透過 PSD 新增專案或模組層級的建構變數。

    注意:如果現有建構設定檔是透過複雜的 Groovy 指令碼指派值,您可能無法透過 PSD 編輯這些值。此外,您無法使用 PSD 編輯以 Kotlin 編寫的建構檔案。

    模組

    您可以透過「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」工具視窗拖曳到版面配置編輯器的設計和 XML 檢視區塊中。
    • 查看替代版本:現在只要在「Tools」視窗中對某個資源按兩下,即可查看這個資源的替代版本。這個檢視畫面會顯示您已建立的各個版本,以及所包含的限定詞。
    • 圖塊和清單檢視:您可以在工具視窗中變更檢視模式,以不同的編排方式呈現資源。

    詳情請參閱如何管理應用程式資源的相關說明。

    在分析 APK 和進行偵錯時查看版本 ID

    為 APK 中的 .so 共用資料庫提供偵錯符號檔案時,Android Studio 會驗證所提供符號檔案的版本 ID 是否與 APK 中 .so 資料庫的版本 ID 相符。

    如果您在 APK 中使用版本 ID 建構原生資料庫,Android Studio 會檢查符號檔案中的版本 ID 與原生資料庫的版本 ID 是否相符,並且在不相符的情況下拒絕符號檔案。如果您並未使用版本 ID 進行建構,提供錯誤的符號檔案可能會導致偵錯時發生問題。

    預設啟用 R8

    R8 將脫糖、縮減、模糊化、最佳化以及 DEX 處理整合為單一步驟,結果讓建構效能獲得大幅提升。R8 是在 Android Gradle 外掛程式 3.3.0 版導入,現在凡是使用外掛程式 3.4.0 以上版本的應用程式和 Android 程式庫專案都會預設啟用這項工具。

    下圖概略說明導入 R8 之前的編譯程序。

    在導入 R8 之前,ProGuard 是與 DEX 和脫糖不同的編譯步驟。

    現在有了 R8,脫糖、縮減、模糊化、最佳化和 DEX 處理 (D8) 全都可透過單一步驟完成,如下圖所示。

    透過 R8,您只要執行一個編譯步驟,就能進行脫糖、縮減、模糊化、最佳化和 DEX 處理。

    提醒您,R8 能夠與現有 ProGuard 規則搭配運作,因此您可能不需要採取任何行動就能享有 R8 的好處。不過,由於這與專為 Android 專案設計的 ProGuard 是不同的技術,因此在進行縮減和最佳化時,可能會導致原先 ProGuard 不會移除的程式碼遭到移除。在這類罕見情況下,您可能必須新增額外規則,讓建構輸出內容保留該程式碼。

    如果您在使用 R8 時遇到問題,請參閱 R8 相容性常見問題,看看是否有該問題的解決方案。如果當中沒有提供解決方案,請回報錯誤。您可以在專案的 gradle.properties 檔案中加入下列其中一行程式碼來停用 R8:

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

    注意:針對特定建構類型,如果您在應用程式模組的 build.gradle 檔案中將 useProguard 設為 false,則不論您是否有在專案的 gradle.properties 檔案中停用 R8,Android Gradle 外掛程式都會使用 R8 縮減該建構類型的應用程式程式碼。

    凡是 Navigation 元件支援的引數類型,現在都可在 Navigation 編輯器中使用。如要進一步瞭解支援的類型,請參閱「在目的地之間傳遞資料」一文。

    版面配置編輯器改善項目 {:#layout-editor}

    版面配置編輯器中的「Attributes」窗格已簡化為單一頁面,展開當中的各個部分後會顯示可供設定的屬性。「Attributes」窗格還包含下列更新項目:

    • 全新的「Declared Attributes」部分會列出版面配置檔案指定的屬性,還可讓您快速新增屬性。
    • 「Attributes」窗格現在還會在各項屬性旁邊顯示指標。如果屬性的值為資源參照,該指標會呈現實心狀態;如果不是,則指標會呈現空心狀態。
    • 系統現在會醒目顯示有錯誤或警告的屬性。紅色醒目顯示表示錯誤 (例如使用無效的版面配置值),橘色醒目顯示表示警告 (例如使用硬式編碼值)。

    可快速匯入依附元件的全新意圖動作

    開始在程式碼中使用特定 Jetpack 和 Firebase 類別時,如果您尚未在專案中加入必要的 Gradle 程式庫依附元件,系統會透過新的意圖動作建議您執行這項操作。舉例來說,如果您要參照 WorkManager 類別,但並未先匯入必要的 android.arch.work:work-runtime 依附元件,系統會透過意圖動作,讓您按一下滑鼠就輕鬆完成這項作業,如下所示。

    特別是,由於 Jetpack 會將支援資料庫重新封包成獨立套件,以便進行管理和更新,因此這項意圖動作可協助您為要使用的 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 已更新,可提供 IntelliJ IDEA 2018.2.2 版的改善項目。

    Android Gradle 外掛程式更新

    如要瞭解 Android Gradle 外掛程式的新功能,請參閱版本資訊

    在 Navigation 編輯器中,您可以使用 Navigation 架構元件,以視覺化方式呈現及建構應用程式導覽機制。

    詳情請參閱使用 Navigation 架構元件實作導覽功能相關說明。

    刪除未使用的 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 版更新了多種個別分析器。

    效能提升

    根據使用者的意見回饋,使用分析器時的轉譯效能已大幅提升。請繼續向我們提供意見回饋,尤其是持續遇到效能問題時。

    分析器記憶體配置追蹤選項

    為了提升分析作業期間的應用程式效能,記憶體分析器現在預設會定期對記憶體配置進行取樣。在搭載 Android 8.0 (API 級別 26) 以上版本的裝置上進行測試時,您可以視需要使用「Allocation Tracking」下拉式選單變更這項行為。

    您可以透過「Allocation Tracking」下拉式選單選擇下列模式:

    • Full:擷取所有物件記憶體配置。請注意,如果應用程式會配置大量物件,則可能會在分析作業期間發生重大的效能問題。

    • Sampled:定期擷取物件記憶體配置的樣本。這是預設行為,而且在分析作業期間對應用程式效能的影響較小。如果應用程式在短時間內配置大量物件,則可能會遇到效能問題。

    • Off:關閉記憶體配置功能。在未選取的狀態下,系統會在擷取 CPU 記錄時自動啟用這個模式,並在記錄完成時返回先前的設定。您可以在 CPU 記錄設定對話方塊中變更這項行為。

      追蹤功能會影響 Java 物件和 JNI 參照。

    檢查影格轉譯資料

    CPU 分析器中,您現在可以檢查 Java 應用程式在主要 UI 執行緒和 RenderThread 上轉譯每個影格所需的時間。如要調查造成 UI 資源浪費和影格速率低落的瓶頸,這項資料可能非常實用。舉例來說,如要維持流暢的影格速率,每個影格必須在 16 毫秒內轉譯完成。要是影格所需的轉譯時間更長,就會以紅色顯示。

    如要查看影格轉譯資料,請透過可用於追蹤系統呼叫的「Trace System Calls」,設定記錄追蹤記錄。記錄追蹤記錄後,請在「FRAMES」部分底下,查看記錄時間軸上各個影格的相關資訊,如下所示。

    如要進一步瞭解如何調查及修正影格速率問題,請參閱「轉譯速度緩慢」一文。

    事件時間軸中的片段

    事件時間軸現在會顯示片段的附加和卸離時間。此外,將滑鼠游標懸停在片段上時,畫面上會顯示說明片段狀態的工具提示。

    在網路分析器中查看連線酬載的格式化文字

    網路分析器先前只會顯示來自連線酬載的原始文字,現在 Android Studio 3.3 版預設會為包括 JSON、XML 和 HTML 在內的特定文字類型套用格式。在「Response」和「Request」分頁中,點選「View Parsed」連結可顯示格式化文字,點選「View Source」連結可顯示原始文字。

    詳情請參閱「使用網路分析器檢查網路流量」一文。

    自動下載 SDK 元件

    如果專案需要 SDK 平台 (NDK 或 CMake) 提供的 SDK 元件,現在只要您已使用 SDK Manager 接受任何相關授權協議,Gradle 就會嘗試自動下載需要的套件。

    詳情請參閱「使用 Gradle 自動下載缺少的套件」。

    支援 Clang-Tidy

    Android Studio 現在支援針對包含原生程式碼的專案使用 Clang-Tidy 進行靜態程式碼分析。如要啟用 Clang-Tidy 支援功能,請將 NDK 更新至 r18 以上版本。

    更新完成後,您可以啟用或重新啟用檢查功能,方法是開啟「Settings」或「Preferences」對話方塊,然後依序前往「Editor」>「Inspections」>「C/C++」>「General」>「Clang-Tidy」。在「Settings」或「Preferences」對話方塊中選取這項檢查功能時,您還可在最右側面板的「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 Manager 提供 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 現在可讓您建構完整支援 Google Play 免安裝技術的 Android App Bundle。也就是說,您現在可透過單一 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 以上版本。假如您符合這些需求條件,IDE 會在您同步處理專案時提示您啟用這項最佳化功能。此外,新專案也會預設啟用這項最佳化功能。

    如要手動啟用這項最佳化功能,請依序點選「File」>「Settings」>「Experimental」>「Gradle」(在 Mac 上應依序點選「Android Studio」>「Preferences」>「Experimental」>「Gradle」),接著勾選「Only sync the active variant」核取方塊。

    注意:這項最佳化功能目前支援僅包含 Java 程式設計語言的專案。舉例來說,如果 IDE 在專案中偵測到 Kotlin 或 C++ 程式碼,則不會自動啟用這項最佳化功能,而您也不得手動啟用這項功能。

    詳情請參閱啟用單一變化版本專案同步處理功能的說明。

    快速提供意見回饋

    如果您選擇要提供使用統計資料,協助我們改善 Android Studio,IDE 視窗底部的狀態列會顯示以下兩個新圖示:

    只要按一下最能反映您目前 IDE 使用體驗的圖示即可。當您點選圖示後,IDE 會傳送使用統計資料,讓 Android Studio 團隊進一步瞭解您的感受。在某些情況下 (例如,如果您反映 IDE 使用體驗不佳),您將有機會提供額外的意見回饋。

    如果尚未選擇提供使用統計資料,您可以啟用這項設定。首先開啟「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 版。
    • 在 Navigation 程式庫中,引數類型的名稱已從 type 改為 argType
    • 這個版本修正了下列錯誤:
      • 使用資料繫結程式庫時,含底線的變數名稱會導致編譯錯誤。
      • CMake 會導致 IntelliSense 和其他 CLion 功能無法運作。
      • 加入 SliceProvider 會導致未使用 androidx.* 程式庫的專案發生編譯錯誤。
      • 部分 Kotlin 單元測試並未執行。
      • 資料繫結相關問題會造成 PsiInvalidElementAccessException
      • <merge> 元素有時會導致版面配置編輯器異常終止。

    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 以上版本皆包含這項修正。

    • 雖然您通常不需要指定建構工具版本,但在 renderscriptSupportModeEnabled 設為 true 的情況下,使用 Android Gradle 外掛程式 3.2.0 版時,仍必須在各個模組的 build.gradle 檔案中加入以下內容:

      android.buildToolsVersion "28.0.3"

    新功能小幫手

    全新的小幫手會告知您 Android Studio 最新異動的相關資訊。

    如果您在安裝或更新完成後啟動 Android Studio,系統會在偵測到有可顯示的新資訊時開啟小幫手。您也可以依序選取「Help」>「What's new in Android Studio」,開啟這個小幫手。

    Android Jetpack

    Android Jetpack 提供相關元件、工具和指南,可讓您不必花費心力執行重複性質的工作,進而加快 Android 開發作業速度,輕鬆快速地建構可測試的優質應用程式。Android Studio 包含下列用於支援 Jetpack 的更新項目。詳情請參閱 Jetpack 說明文件

    新的 Navigation 編輯器已與 Android Jetpack 的導覽元件整合,提供用於建立應用程式導覽結構的圖形檢視區塊。Navigation 編輯器可簡化應用程式內目的地間,導覽機制的設計與實作方式。

    在 Android Studio 3.2 版中,Navigation 編輯器是一項實驗功能。如要啟用 Navigation 編輯器,請依序點選「File」>「Settings」(在 Mac 上則是依序點選「Android Studio」>「Preferences」),接著在左側窗格中選取「Experimental」類別,勾選「Enable Navigation Editor」旁邊的方塊,然後重新啟動 Android Studio。

    詳情請參閱 Navigation 編輯器說明文件

    AndroidX 遷移

    為了配合 Jetpack,我們會將 Android 支援資料庫遷移至使用 androidx 命名空間的新 Android 擴充功能程式庫。詳情請參閱「AndroidX 總覽」一文。

    Android Studio 3.2 版提供全新的遷移功能,協助您完成這項程序。

    如要將現有專案遷移至 AndroidX,請依序選擇「Refactor」>「Migrate to AndroidX」。如有任何 Maven 依附元件尚未遷移至 AndroidX 命名空間,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 的新應用程式提供模型就會使用應用程式套件,根據各個使用者的裝置設定產生並提供經過最佳化的 APK,讓使用者只下載執行應用程式所需的程式碼和資源。您不再需要建構、簽署及管理多個 APK,而且使用者下載的內容不但檔案較小,還會經過最佳化處理。

    此外,您可以在應用程式專案中新增功能模組,並將這些模組加入應用程式套件中。這樣一來,使用者就能隨選下載及安裝應用程式的功能。

    如要建立套件,請依序選擇「Build」>「Build Bundle(s)/APK(s)」>「Build Bundle(s)」

    如要瞭解詳情 (包括建構及分析 Android App Bundle 的操作說明),請參閱 Android App Bundle 相關文章。

    版面配置編輯器中的範例資料

    許多 Android 版面配置都包含執行階段資料,這可能會導致您在應用程式開發作業的設計階段,難以透過視覺化方式呈現版面配置的外觀和風格。現在您可以透過填入範例資料,在版面配置編輯器中輕鬆預覽檢視區塊。您新增檢視區塊後,「Design」視窗中的檢視區塊下方會顯示 按鈕。按一下這個按鈕即可設定設計時間檢視屬性。您可以從多種範例資料範本中進行選擇,並指定要用於填入檢視區塊的範例項目數量。

    如要試用範例資料,請在新的版面配置中加入 RecyclerView,按一下檢視區塊下方的設計時間屬性按鈕 ,然後從範例資料範本的輪轉介面中選擇所需選項。

    Slice

    「Slice」可讓您透過新的方式,在其他 Android 使用者介面途徑中嵌入應用程式的部分功能。舉例來說,您可以利用 Slice,在 Google 搜尋建議中顯示應用程式功能和內容。

    Android Studio 3.2 版內建相關範本,讓您運用新的 Slice Provider API 擴充應用程式,同時也提供新的 Lint 檢查項目,確保您採用最佳做法建構 Slice。

    如要使用這項功能,請先在專案資料夾上按一下滑鼠右鍵,然後依序選擇「New」>「Other」>「Slice Provider」

    如要瞭解詳情 (包括如何測試 Slice 互動情形),請參閱 Slies 入門指南

    Kotlin 1.2.61 版

    Android Studio 3.2 版隨附 Kotlin 1.2.61 版,而新的 Android SDK 也與 Kotlin 進一步整合。詳情請參閱 Android 開發人員網誌

    IntelliJ IDEA 2018.1.6 版

    核心 Android Studio IDE 已更新,可提供 IntelliJ IDEA 2018.1.6 版的改善項目。

    Android 分析器

    您可以在 Android Studio 3.2 版中試用下列 Android 分析器新功能。

    工作階段

    您現在可將分析器資料儲存為工作階段,以便日後回顧及檢查。在重新啟動 IDE 之前,分析器會保留工作階段資料。

    當您記錄方法追蹤記錄擷取記憶體快照資料時,IDE 會將該項資料 (連同應用程式的網路活動) 新增為目前工作階段的獨立項目,且您可以輕鬆切換不同記錄來比較資料。

    系統追蹤

    在「CPU Profiler」中選取新的「System Trace」設定,即可檢查裝置的系統 CPU 和執行緒活動。這項追蹤記錄設定是以 systrace 為基礎,適合用來調查系統層級的問題,例如 UI 資源浪費問題。

    使用這項追蹤記錄設定時,您可以藉由原生追蹤 API 檢測 C/C++ 程式碼,或使用 Trace 類別檢測 Java 程式碼,在分析器時間軸中標註重要的程式碼常式。

    在記憶體分析器中檢查 JNI 參照

    如果您將應用程式部署至搭載 Android 8.0 (API 級別 26) 以上版本的裝置,現在可以使用記憶體分析器檢查應用程式 JNI 程式碼的記憶體配置情形。

    在應用程式執行期間,選取您要檢查的時間軸部分,然後從類別清單上方的下拉式選單中選取「JNI heap」,如下所示。接著,您可以照常檢查記憶體快照資料中的物件,並在「Allocation Call Stack」分頁中對物件按兩下,查看 JNI 參照在程式碼中的配置和發布位置。

    匯入、匯出及檢查記憶體快照資料檔案

    您現在可以匯入、匯出及檢查透過記憶體分析器建立的 .hprof 記憶體快照資料檔案。

    如要匯入 .hprof 檔案,請在分析器的「Sessions」窗格中按一下「Start new profiler session」圖示 ,然後選取「Load from file」。接著,您可以像處理其他記憶體快照資料一樣,在記憶體分析器中檢查相關資料。

    如要儲存記憶體快照資料以便日後查看,請在「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 分析器記錄 CPU 活動後,您可以將資料匯出為 .trace 檔案,方便與他人分享或在日後執行檢查。

    如要在記錄 CPU 活動後匯出追蹤記錄,請按照下列步驟操作:

    1. 在想要從 CPU 時間軸匯出的記錄上按一下滑鼠右鍵。
    2. 從下拉式選單中選取「Export trace」
    3. 前往要儲存檔案的位置,然後按一下「Save」
    匯入及檢查 CPU 追蹤記錄檔案

    您現在可以匯入及檢查透過 Debug APICPU 分析器建立的 .trace 檔案。不過,目前您無法匯入系統追蹤記錄。

    如要匯入追蹤記錄檔案,請在分析器的「Sessions」窗格中按一下「Start new profiler session」圖示 ,然後選取「Load from file」。接著,您可以照常在 CPU 分析器中檢查相關資料,但會有以下例外狀況:

    • CPU 活動不會沿著 CPU 時間軸顯示。
    • 執行緒活動時間軸只會指出各個執行緒有可用追蹤記錄資料的位置,不會顯示實際的執行緒狀態 (例如執行中、等待中或休眠中)。
    使用 Debug API 記錄 CPU 活動

    您現在可藉由使用 Debug API 檢測應用程式,在 CPU 分析器中開始及停止記錄 CPU 活動。將應用程式部署至裝置後,分析器會在應用程式呼叫 startMethodTracing(String tracePath) 時自動開始記錄 CPU 活動,並在應用程式呼叫 stopMethodTracing() 時停止記錄。在記錄透過這個 API 觸發的 CPU 活動時,CPU 分析器會將「Debug API」顯示為所選 CPU 記錄設定。

    能源分析器

    能源分析器會以視覺化方式呈現應用程式的預估能源用量,以及會影響能源用量的系統事件,例如喚醒鎖定、鬧鐘和工作。

    當您在搭載 Android 8.0 (API 26) 以上版本的已連結裝置或 Android Emulator 上執行應用程式時,能源分析器會在「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'
                }
            }
            
          
    Slice 的 Lint 檢查功能

    針對 Slice 提供的新 Lint 檢查功能,有助於確保您建構 Slice 的方式正確無誤。舉例來說,如果您尚未替 Slice 指派主要動作,Lint 檢查功能就會發出警告。

    全新 Gradle 目標

    您可以使用新的 lintFix Gradle 工作,將 Lint 檢查功能建議的所有「安全」修正內容直接套用至原始碼。舉例來說,Lint 檢查功能可能會建議您套用 SyntheticAccessor 的安全修正內容。

    中繼資料更新

    我們針對 Lint 檢查功能更新了多項中繼資料 (例如服務層級轉換檢查),以便與 Android 9 (API 級別 28) 搭配運作。

    在針對新的變化版本執行 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 工具做為實驗功能,藉此縮減整體建構時間。Android Studio 3.2 版則預設會開啟 D8 脫糖程序。

    全新程式碼縮減器

    R8 是取代 ProGuard 的新工具,用於程式碼的縮減與模糊處理。如要使用 R8 預先發布版,請在專案的 gradle.properties 檔案中加入以下內容:

          android.enableR8 = true
        

    變更多個 APK 的預設 ABI

    如要建構多個 APK,且每個 APK 分別指定不同的 ABI,則在預設情況下,外掛程式不會再為下列 ABI 產生 APK:mipsmips64armeabi

    如要建構指定這些 ABI 的 APK,您必須使用 NDK r16b 以下版本,並在 build.gradle 檔案中指定 ABI,如下所示:

        splits {
            abi {
                include 'armeabi', 'mips', 'mips64'
                ...
            }
        }
        
        splits {
            abi {
                include("armeabi", "mips", "mips64")
                ...
            }
        }
        

    注意:Android Studio 3.1 RC1 以上版本也包含這項行為變更。

    改善 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」,在 IDE 左側開啟「Project」視窗。在「cpp」目錄中,凡是屬於應用程式專案範圍內的標頭,都會整理至各個本機 C/C++ 程式庫依附元件的「include」節點底下,如下所示。

    預設啟用原生 multidex

    將偵錯版本的應用程式部署至搭載 Android API 級別 21 以上的裝置時,舊版的 Android Studio 會啟用原生 multidex。現在,無論您要部署至裝置,還是要建構發布用的 APK,Gradle 適用的 Android 外掛程式都會為設定 minSdkVersion=21 以上版本的所有模組啟用原生 multidex。

    AAPT2 已移至 Google 的 Maven 存放區

    自 Android Studio 3.2 版起,AAPT2 (Android 資產封裝工具 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()
            }
        }
        
        buildscript {
            repositories {
                google() // here
                jcenter()
            }
            dependencies {
                classpath("com.android.tools.build:gradle:3.2.0")
            }
        }
        allprojects {
            repositories {
                google() // and here
                jcenter()
            }
        }
        

    新版 AAPT2 修正了許多問題,包括改善 Windows 中非 ASCII 字元的處理方式。

    移除隨選設定

    「Configure on demand」偏好設定已從 Android Studio 中移除。

    Android Studio 不會再將 --configure-on-demand 引數傳遞至 Gradle。

    ADB 連線小幫手

    新的 ADB 連線小幫手會提供逐步說明,協助您透過「Android Debug Bridge (ADB)」連線設定及使用裝置。

    如要啟動這個小幫手,請依序選擇「Tools」>「Connection Assistant」

    ADB 連線小幫手會在「Assistant」面板的一系列頁面中,提供相關操作說明、關聯控制項和已連結的裝置清單。

    模擬器改善項目

    您現在隨時可以在 Android Emulator 中儲存及載入 AVD (Android 虛擬裝置) 的快照,方便讓模擬裝置快速返回已知狀態進行測試。使用 AVD Manager 編輯 AVD 時,您可以指定要在 AVD 啟動時載入哪一個 AVD 快照。

    用於儲存、載入及管理 AVD 快照的控制項現在都位於 Android Emulator「Extended controls」視窗的「Snapshots」分頁中。

    詳情請參閱「快照」相關說明。

    如要進一步瞭解 Android Emulator 有哪些新功能和異動項目,請參閱 Android Emulator 版本資訊

    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 執行個體,導致發生異常終止的情形並顯示 VerifyErrorinvoke-super/virtual can't be used on private method
      • Data Binding 編譯器過去依附舊版 com.android.tools:annotations。現在,編譯器會使用基礎專案的工具註解 (如果有的話)。
      • 使用分析器時,Android Studio 會在片段轉換時停止運作。
      • 對包含文字方塊的版面配置進行偵錯時,偵錯工具會停止運作。
      • D8 無法讀取某些含有特殊字元的 ZIP 檔案。

    3.1.3 版 (2018 年 6 月)

    這個 Android Studio 3.1 版的更新版本修正了下列錯誤:

    • 使用版面配置編輯器之後,記憶體流失情形會導致 Android Studio 的執行速度變慢且沒有回應。這項更新修正了大部分的這類問題。我們會盡快發布另一個更新版本,以便解決其他記憶體流失問題。
    • 在部分 Verizon Ellipsis 平板電腦上,某些透過 D8 建構的應用程式會停止運作。
    • 在搭載 Android 5.0 或 5.1 (API 級別 21 或 22) 的裝置上,透過 D8 建構的應用程式會安裝失敗並顯示 INSTALL_FAILED_DEXOPT 錯誤。
    • 在搭載 Android 4.4 (API 級別 19) 的裝置上,某些採用 OkHttp 程式庫並透過 D8 建構的應用程式會停止運作。
    • 在為 com.intellij.psi.jsp.JspElementType 進行類別初始化期間,Android Studio 有時會無法啟動並發生 ProcessCanceledException

    3.1.2 版 (2018 年 4 月)

    這個 Android Studio 3.1 版的更新版本修正了下列錯誤:

    • 在某些情況下,Android Studio 會在結束時無限期停止回應。
    • 在啟用立即執行功能的情況下,透過來源集設定的建構作業會失敗,並顯示以下訊息:

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

    • 在啟用立即執行功能的情況下,由 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 感知 Make 工作會從「Run/Debug Configurations」的「Before launch」區段中移除。這會導致系統並未在您點選「Run」或「Debug」按鈕時建構專案,進而造成一些錯誤,例如部署的 APK 有誤,以及使用立即執行功能時發生異常終止的情形。

      為解決這個問題,Android Studio 3.1.1 版會針對缺少這個項目的專案,將 Gradle 感知 Make 工作新增至執行設定。系統會在載入專案並首次執行 Gradle 同步處理後進行這項修改作業。

    • 在啟用進階分析功能的情況下,對包含文字方塊的版面配置進行偵錯時,偵錯工具會停止運作。
    • 點選「Build Variants」後,Android Studio 會沒有反應。
    • 系統會擷取 AAR (Android ARchive) 檔案兩次,分別發生在 Gradle 同步處理程序和 Gradle 建構程序期間。
    • 從 SVG 檔案匯入的部分向量可繪項目缺少元素。
    • 有關 compile 依附元件設定已遭淘汰的警告內容已更新,現在會針對 implementationapi 設定進一步提供相關指引。想進一步瞭解如何改用 compile 設定以外的選項,請參閱新依附元件設定的說明文件

    程式設計/IDE

    IntelliJ 2017.3.3 版

    核心 Android Studio IDE 已更新,可提供 IntelliJ IDEA 2017.3.3 版的改善項目,包括更優異的集合與字串控制流程分析,更精確的「是否可為空值」推論功能、新的快速修正內容等。

    詳情請參閱適用於 IntelliJ IDEA 2017.2 版和 2017.3 版,以及錯誤修正更新的 JetBrains 版本資訊。

    改善使用 Room 時的 SQL 編輯功能

    現在使用 Room 資料庫集時,您可以享有更完善的 SQL 編輯功能,例如:

    • Query 中的程式碼完成功能能夠理解 SQL 資料表 (實體)、資料欄、查詢參數、別名、彙整、子查詢和 WITH 子句。
    • SQL 語法醒目顯示功能現可正常運作。
    • 您可以在 SQL 資料表名稱上按一下滑鼠右鍵並重新命名,這樣系統會一併重新編寫對應的 Java 或 Kotlin 程式碼 (包括查詢的傳回類型等)。同樣地,如果您重新命名 Java 類別或欄位,系統也會重新編寫對應的 SQL 程式碼。
    • 當您使用「Find usages」(按一下滑鼠右鍵並從內容選單中選擇「Find usages」) 時,系統會顯示 SQL 使用資料。
    • 如要前往 Java 或 Kotlin 程式碼中 SQL 實體的宣告內容,您可以按住 Control 鍵 (如果使用 Mac,則按住 Command 鍵) 並點選該實體。

    如要進一步瞭解如何透過 Room 使用 SQL,請參閱「使用 Room 將資料儲存在本機資料庫」一文。

    資料繫結更新

    這項更新對資料繫結提供以下幾個改善項目:

    • 您現在可以使用 LiveData 物件做為資料繫結運算式中的可觀測欄位。ViewDataBinding 類別現在提供新的 setLifecycle() 方法,可用於觀測 LiveData 物件。

    • ObservableField 類別現在可以在其建構函式中接受其他 Observable 物件。

    • 您可以預覽用於資料繫結類別的全新漸進式編譯器。如要進一步瞭解這個新的編譯器和啟用操作說明,請參閱 Data Binding Compiler V2

      這個新編譯器的優點如下:

      • ViewBinding 類別是由 Gradle 適用的 Android 外掛程式在 Java 編譯器之前產生。
      • 程式庫會在編譯應用程式時保留其產生的繫結類別,而不會每次重新產生。這可大幅提升多模組專案的效能。

    編譯器和 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++ 資料結構的格式設定器 (「美化排版器」),讓 LLDB 輸出結果更容易讀取。

    • LLDB 現在只支援 Android 4.1 (API 級別 16) 以上版本。

    注意:Android Studio 3.0 以上版本的原生偵錯功能不支援 32 位元 Windows。如果您使用 32 位元 Windows,且需要對原生程式碼進行偵錯,請使用 Android Studio 2.3 版。

    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 存放區。

    效能工具

    使用 CPU 分析器對原生 C++ 程序進行取樣

    CPU 分析器現在提供一項預設設定,可記錄應用程式原生執行緒的取樣追蹤記錄。如要使用這項設定,請將應用程式部署至搭載 Android 8.0 (API 級別 26) 以上版本的裝置,然後從 CPU 分析器的記錄設定下拉式選單中選取「Sampled (Native)」。之後,請照常記錄和檢查追蹤記錄

    您可以建立記錄設定,藉此變更預設設定 (例如取樣間隔)。

    如要改回重新追蹤 Java 執行緒,請選取「Sampled (Java)」或「Instrumented (Java)」設定。

    篩選 CPU 追蹤記錄、記憶體配置結果和記憶體快照資料

    CPU 分析器記憶體分析器提供搜尋功能,讓您篩選方法追蹤記錄、記憶體配置和記憶體快照資料記錄的結果。

    如要進行搜尋,請按一下窗格右上角的「Filter」圖示 ,輸入查詢內容,然後按下 Enter 鍵。

    提示:您也可以按下 Control + F 鍵 (如果使用 Mac,則為 Command + F 鍵) 來開啟搜尋欄位。

    在 CPU 分析器的「Flame Chart」分頁中,包含搜尋查詢相關方法的呼叫堆疊會醒目顯示,並移至圖表左側。

    想進一步瞭解如何依照方法、類別或套件名稱進行篩選,請參閱記錄及檢查方法追蹤記錄相關說明。

    網路分析器中的「Request」分頁

    網路分析器現在包含「Request」分頁,可提供所選時間範圍內的網路要求相關詳細資料。舊版中的網路分析器只會提供網路回應相關資訊。

    網路分析器中的「Thread View」分頁

    網路分析器中選取時間軸的某個部分後,您可以選取下列其中一個分頁,查看該時間範圍內的網路活動詳細資料:

    • Connection View:提供與 Android Studio 先前版本相同的資訊。這個檢視畫面會列出應用程式所有 CPU 執行緒在所選時間軸部分傳送或接收的檔案。您可以檢查每個要求的大小、類型、狀態和傳輸時間。
    • Thread View:顯示應用程式每個 CPU 執行緒的網路活動。這個檢視畫面可讓您查看各個網路要求是由哪個應用程式執行緒負責。

    版面配置檢查器

    我們在版面配置檢查器中加入了幾項新功能,包括過去由已淘汰的階層檢視器和 Pixel Perfect 工具提供的部分功能:

    • 用於瀏覽和檢查版面配置的縮放按鈕和鍵盤快速鍵
    • 參照格線重疊元素
    • 載入參考圖片並做為重疊元素使用的功能 (適合用來將版面配置與 UI 模擬圖進行比較)
    • 顯示子樹狀結構預覽,將複雜版面配置中的特定檢視區塊分離出來

    版面配置編輯器

    版面配置編輯器中的「Palette」有多項改善項目:

    您可以在「Component tree」或設計編輯器中使用新的「Convert view」指令,轉換檢視區塊或版面配置的類型。

    您現在可以在「Attributes」視窗頂端的檢視檢查器中,使用新的「Create a connection」按鈕 為所選檢視區塊附近的項目建立限制。

    執行與立即執行

    我們已提升「Select deployment target」對話方塊中「Use same selection for future launches」選項的行為一致性。如果「Use same selection」選項已啟用,「Select Deployment target」對話方塊只會在您首次使用 Run 指令時開啟,直到所選裝置中斷連線為止。

    如果指定搭載 Android 8.0 (API 級別 26) 以上版本的裝置,立即執行功能可將變更內容部署至資源,不會導致應用程式重新啟動。可以這麼做的原因是資源包含在分割 APK 中。

    模擬器

    如要進一步瞭解模擬器自 Android Studio 3.0 版以來有哪些新功能和異動內容,請參閱 Android Emulator 27.0.2 版27.1.12 版的版本資訊。

    重大改善項目包括:

    • 用於儲存模擬器狀態和加快啟動速度的 Quick Boot 快照,以及使用「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」指令已移除,如下文所述。

    現可透過指令列使用裝置監控器

    在 Android Studio 3.1 版中,裝置監控器的重要性已降低。在許多情況下,裝置監控器的可用功能現已改由全新和經過改良的工具來提供。

    想瞭解如何透過指令列叫用裝置監控器,以及透過裝置監控器提供的工具詳細資訊,請參閱裝置監控器說明文件

    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 版的次要更新版本,當中包含多項一般錯誤修正和效能改善項目。

    Gradle 適用的 Android 外掛程式 3.0.0 版

    新版 Gradle 適用的 Android 外掛程式包含各種改善項目和新功能,但主要是針對含有大量模組的專案提升建構效能。使用新版外掛程式處理這類大型專案時,您應該會感受到下列差異:

    • 新的延遲依附元件解析功能縮短了建構設定時間。
    • 您可以只針對要建構的專案和變化版本,使用變化版本感知依附元件解析功能
    • 對程式碼或資源套用簡易變更時的漸進式建構時間較短。

    注意:這些改善項目需要進行大幅變更,並會破壞外掛程式的部分行為、DSL 和 API。如要升級至 3.0.0 版,您的建構檔案和 Gradle 外掛程式可能需要經過變更。

    這個版本還包含以下內容:

    • 支援 Android 8.0。
    • 支援根據語言資源建構獨立的 APK。
    • 支援 Java 8 程式庫和 Java 8 語言功能 (不含 Jack 編譯器)。
    • 支援 Android 測試支援資料庫 1.0 版 (Android 測試公用程式和 Android Test Orchestrator)。
    • 提升 ndk-build 和 cmake 建構速度。
    • 改善 Gradle 同步處理速度。
    • AAPT2 現已預設為啟用。
    • ndkCompile 現在有更多使用限制。建議您改用 CMake 或 ndk-build 編譯要封裝至 APK 的原生程式碼。詳情請參閱從 ndkcompile 遷移相關說明。

    如要進一步瞭解異動內容,請參閱 Gradle 適用的 Android 外掛程式版本資訊

    如果您已準備好升級至新版外掛程式,請參閱遷移至 Gradle 適用的 Android 外掛程式 3.0.0 版相關說明。

    支援 Kotlin

    正如我們在2017 年 Google I/O 大會所宣布,Android 現已正式支援 Kotlin 程式設計語言。因此,這個版本的 Android Studio 支援利用 Kotlin 語言進行 Android 開發作業。

    如要在專案中納入 Kotlin,您可以依序點選「Code」>「Convert Java File to Kotlin File」,將 Java 檔案轉換成 Kotlin 檔案,也可以使用「New Project」精靈建立啟用 Kotlin 的新專案。

    如要踏出第一步,請參閱將 Kotlin 新增至專案的操作說明。

    支援 Java 8 語言功能

    您現在可以使用特定的 Java 8 語言功能和透過 Java 8 建構的程式庫,而不再需要使用 Jack。請先停用 Jack,以便使用預設工具鏈內建的改良版 Java 8 支援功能。

    如要更新專案以便支援新的 Java 8 語言工具鏈,請依序點選「File」>「Project Structure」,在「Project Structure」對話方塊中將「Source Compatibility」和「Target Compatibility」更新至 1.8。詳情請參閱使用 Java 8 語言功能的操作說明。

    Android 分析器

    全新的 Android 分析器取代了 Android 監控器工具,並提供一套新工具,可用於即時測量應用程式的 CPU、記憶體和網路用量。您可以執行取樣式方法追蹤作業來測量程式碼執行時間、擷取記憶體快照資料、查看記憶體配置情形,以及檢查網路傳輸檔案的詳細資料。

    如要開啟這項工具,請依序點選「View」>「Tool Windows」>「Android Profiler」,或是在工具列中按一下「Android Profiler」圖示。

    視窗頂端的事件時間軸會顯示觸控事件、按鍵事件和相關活動變更,讓您可掌握更多脈絡資訊,瞭解時間軸中的其他效能事件。

    注意:Logcat 檢視畫面也已移至另一個視窗 (先前位於現已移除的 Android 監控器內)。

    在「Android Profiler」的總覽時間軸上,點選「CPU」、「MEMORY」或「NETWORK」時間軸即可存取對應的分析器工具。

    CPU 分析器

    CPU 分析器會觸發樣本或檢測 CPU 追蹤記錄,協助您分析應用程式的 CPU 執行緒使用情形。接著,您就能使用各種資料檢視和篩選器排解 CPU 效能問題。

    詳情請參閱 CPU 分析器指南

    記憶體分析器

    記憶體分析器可協助您找出可能導致延遲、沒有回應、甚至應用程式異常終止的記憶體流失情形。這項工具會顯示應用程式記憶體用量的即時圖表,並可讓您擷取記憶體快照資料、強制執行垃圾收集,以及追蹤記憶體配置。

    詳情請參閱記憶體分析器指南

    網路分析器

    網路分析器可讓您監控應用程式的網路活動、檢查各項網路要求的酬載,以及連回產生網路要求的程式碼。

    詳情請參閱網路分析器指南

    APK 分析和偵錯

    現在只要在建構 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 免安裝應用程式支援功能,您可以在專案中使用兩種新的模組類型建立免安裝應用程式:免安裝應用程式模組和功能模組 (如要使用這些模組,您必須先安裝免安裝應用程式開發 SDK)。

    此外,Android Studio 還提供新的模組化重構操作,協助您在現有專案中加入免安裝應用程式支援功能。舉例來說,如果您想要重構專案,在免安裝應用程式功能模組中置入部分類別,可以在「Project」視窗中選取類別,然後依序點選「Refactor」>「Modularize」。在畫面上出現的對話方塊中,選取要置入類別的模組,然後按一下「OK」

    準備好測試免安裝應用程式時,只要在執行設定的啟動選項中指定免安裝應用程式的網址,即可在已連結的裝置上建構及執行免安裝應用程式模組,方法如下:依序選取「Run」>「Edit Configurations」,選取所需免安裝應用程式模組,然後在「Launch Options」底下設定網址。

    詳情請參閱 Android 免安裝應用程式相關說明。

    Android Things 模組

    「New Project」和「New Module」精靈提供全新的 Android Things 範本,可協助您開始為搭載 Android 的 IoT 裝置進行開發。

    詳情請參閱建立 Android Things 專案的操作說明。

    自動調整圖示精靈

    Image Asset Studio 現在支援向量可繪項目,可讓您建立適用於 Android 8.0 的自動調整啟動器圖示,同時為舊版裝置建立傳統圖示 (「舊版」圖示)。

    首先,請在專案中的「res」資料夾上按一下滑鼠右鍵,然後依序點選「New」>「Image Asset」。在「Asset Studio」視窗中,選取「Launcher Icons (Adaptive and Legacy)」做為圖示類型。

    注意:您必須將 compileSdkVersion 設為 26 以上,才能使用自動調整啟動器圖示。

    詳情請參閱「自動調整圖示」一文。

    支援字型資源

    為了支援 Android 8.0 中的新字型資源,Android Studio 提供字型資源選取器,可協助您將字型封裝至應用程式,或是對專案進行設定,讓系統在裝置上下載字型 (如果有的話)。您也可以透過版面配置編輯器,在版面配置中預覽字型

    如要試用可下載的字型,請確認裝置或模擬器執行的是 Google Play 服務 11.2.63 以上版本。詳情請參閱「可下載的字型」一文。

    Firebase 應用程式索引小幫手

    我們更新了 Firebase Assistant,在其中加入新的應用程式索引測試教學課程。如要開啟這個小幫手,請依序選取「Tools」>「Firebase」。接著依序選取「App Indexing」>「Test App Indexing」

    教學課程包含用於測試公開和個人內容索引的新按鈕:

    • 在步驟 2 中按一下「Preview search results」,確認網址是否會顯示在 Google 搜尋結果中。
    • 在步驟 3 中按一下「Check for errors」,確認應用程式中的可編入索引物件是否已加入個人內容索引。

    應用程式連結小幫手已更新,現在提供下列新功能:

    • 為每個網址對應新增網址測試,確保意圖篩選器能夠處理實際網址。

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

    • 使用適當的物件項目建立 Digital Asset Links 檔案以便支援 Google Smart Lock,並在資訊清單檔案中加入對應的 asset_statements <meta-data> 標記。

    網址意圖篩選器驗證工具

    Android Studio 現在可讓您在資訊清單檔案中使用特殊標記,以便測試意圖篩選器網址。這類標記與應用程式連結小幫手可為您建立的標記相同。

    如要為意圖篩選器宣告測試網址,請加入 <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"

    如有任何測試網址未傳遞意圖篩選器定義,系統就會顯示 Lint 錯誤。即使發生這類錯誤,您還是可以建構偵錯變化版本,但這樣做會破壞發布子版本。

    版面配置編輯器

    我們更新了版面配置編輯器,在其中加入許多強化項目,包括:

    • 新的工具列版面配置和圖示。
    • 元件樹狀結構中的全新版面配置。
    • 更完善的拖曳檢視插入功能。
    • 在編輯器下方提供新的錯誤面板,當中顯示所有問題和修正建議 (如果有的話)。
    • 各種 UI 強化項目,可協助您透過 ConstraintLayout 進行建構作業,包括:
      • 全新的建立障礙支援功能。
      • 全新的建立群組支援功能:在工具列中依序選取「Guidelines」>「Add Group」,這項功能需要使用 ConstraintLayout 1.1.0 Beta 2 以上版本。
      • 用於建立鏈結的全新 UI:選取多個檢視區塊,然後按一下滑鼠右鍵並選取「Chain」

    版面配置檢查器

    版面配置檢查器提供強化功能,方便您對應用程式版面配置相關問題進行偵錯。例如,您可以將各項資源歸入常用類別,以及在「View Tree」和「Properties」窗格中使用新的搜尋功能。

    APK 分析工具

    現在 apkanalyzer 工具可讓您透過指令列使用 APK 分析工具。

    APK 分析工具也已更新,提供下列改善項目:

    • 針對透過 ProGuard 建構的 APK,您可以載入 ProGuard 對應檔,為 DEX 檢視器新增多項功能,包括:
      • 使用粗體來表示不應在縮減程式碼時移除的節點。
      • 按下特定按鈕,即可顯示在縮減程序中遭到移除的節點。
      • 按下特定按鈕,即可將樹狀檢視中由 ProGuard 模糊化的節點還原為原始名稱。
    • DEX 檢視器現在會顯示每個套件、類別及方法的預估大小影響。
    • 在頂端新增篩選選項,可用於顯示/隱藏欄位和方法。
    • 在樹狀檢視中,如果節點是 DEX 檔案中未定義的參照,則會以斜體顯示。

    詳情請參閱「使用 APK 分析工具分析版本」一文。

    D8 DEX 編譯器預覽功能

    Android Studio 3.0 版提供選用的新 DEX 編譯器:D8。這個新的 D8 編譯器最終會取代 DX 編譯器,但您可以選擇立即採用。

    DEX 編譯作業會直接影響應用程式的建構時間、.dex 檔案大小和執行階段效能。相較於目前的 DX 編譯器,全新 D8 編譯器的編譯速度較快,輸出的 .dex 檔案也較小,同時可保持或甚至提升應用程式執行階段效能。

    如要試用這項功能,請在專案的 gradle.properties 檔案中設定以下內容:

    android.enableD8=true
        

    詳情請參閱有關 D8 編譯器的網誌文章

    Google 的 Maven 存放區

    Android Studio 現在預設會透過 Google 的 Maven 存放區 (而非仰賴 Android SDK Manager),取得 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.3 版2017.1 版的幾項新功能,例如 Java 8 語言重構、參數提示、語意醒目顯示、可拖曳的中斷點、即時搜尋結果等。
    • 新增許多 Lint 檢查項目。
    • 另請參閱最新的Android Emulator 更新內容

    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。
    • 修正使用 NDK R14 以上版本執行 NDK 建構作業時會發生的錯誤。

    另請參閱 Android Emulator 26.0.3 版的更新內容。

    2.3.1 版 (2017 年 4 月)

    這是 Android Studio 2.3 版的次要更新版本,當中修正了某些實體 Android 裝置無法妥善支援立即執行功能的錯誤 (詳情請參閱問題 #235879)。

    <h3 class="hide-from-toc">
      New
    </h3>
    
    <div class="video-wrapper-left">
      <iframe class="devsite-embedded-youtube-video" data-video-id="VFyKclKBGf0"
              data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
      </iframe>
    </div>
    
    <ul>
      <li>Android Studio can now convert PNG, BMP, JPG, and static GIF files to
      WebP format. WebP is an image file format from Google that provides lossy
      compression (like JPEG) as well as transparency (like PNG) but can provide
      better compression than either JPEG or PNG. For more information, see
        <a href="/studio/write/convert-webp.html">Convert images to WebP in Android
        Studio</a>.
      </li>
    
      <li>The new <a href="/studio/write/app-link-indexing.html">App Links
      Assistant</a> simplifies the process of adding Android App Links to your app
      into a step-by-step wizard. Android App Links are HTTP URLs that bring users
      directly to specific content in your Android app.
      </li>
    
      <li>The Layout Editor now includes support for two new ConstraintLayout
      features:
        <ul>
          <li>Define a view size based on an aspect ratio.
          </li>
          <li>Create packed, spread, and weighted linear groups with constraint
          chains.
          </li>
        </ul>
        For more information, see <a href=
        "/training/constraint-layout/index.html">Build a Responsive UI with
        ConstraintLayout</a>.
      </li>
    
      <li>The Layout Editor also now lets you create a list of <a href=
      "/studio/write/layout-editor.html#edit-properties">favorite attributes</a> so
      you don't have to click <b>View all attributes</b> to access the attributes
      you use most.
      </li>
    
      <li>When adding a material icon using the Vector Import Dialog (<b>File &gt;
      New &gt; Vector Asset</b>), you can now filter the list of available icons by
      category or by icon name. For more information, see <a href=
      "/studio/write/vector-asset-studio.html#materialicon">Adding a material
      icon</a>.
      </li>
    
      <li>
        <a href="/studio/write/annotations.html#accessibility">New and updated
        annotations</a>. The new <code>@RestrictTo</code> annotation for methods,
        classes, and packages lets you restrict an API. The updated
        <code>@VisibleForTesting</code> annotation now has an optional
        <code>otherwise</code> argument that lets you designate what the visibility
        of a method should be if not for the need to make it visible for testing.
        Lint uses the <code>otherwise</code> option to enforce the intended
        visibility of the method.
      </li>
    
      <li>New <a href="/studio/write/lint.html#snapshot">lint baseline support</a>
      allows you to use a snapshot of your project's current set of warnings as a
      baseline for future inspection runs so only new issues are reported. The
      baseline snapshot lets you start using lint to fail the build for new issues
      without having to go back and address all existing issues first.
      </li>
    
      <li>New lint checks, including the following:
        <ul>
          <li>Obsolete <code>SDK_INT</code> Checks: Android Studio removes obsolete
          code that checks for SDK versions.
          </li>
          <li>Object Animator Validation: Lint analyzes your code to make sure that
          your <code>ObjectAnimator</code> calls reference valid methods with the
          right signatures and checks that those methods are annotated with <code>
            @Keep</code> to prevent ProGuard from renaming or removing them during
            release builds.
          </li>
          <li>Unnecessary Item Decorator Copy: Older versions of the
          <code>RecyclerView</code> library did not include a divider decorator
          class, but one was provided as a sample in the support demos. Recent
          versions of the library have a divider decorator class. Lint looks for
          the old sample and suggests replacing it with the new one.
          </li>
          <li>WifiManager Leak: Prior to Android 7.0 (API level 24), initializing
          the <code>WifiManager</code> with <code><a href="/reference/android/content/Context.html#getSystemService(java.lang.Class&lt;T&gt;)">Context.getSystemService()</a></code>
          can cause a memory leak if the context is not the application context.
          Lint looks for these initializations, and if it <em>cannot</em> determine
          that the context is the application context, it suggests you use <code><a href="/reference/android/content/Context.html#getApplicationContext()">Context.getApplicationContext()</a></code> to get the proper context for the
          initialization.
          </li>
          <li>Improved Resource Prefix: The existing <code>resourcePrefix</code>
          lint check had many limitations. You can now configure your project with
          a prefix, such as <code>android { resourcePrefix '<var>my_lib</var>'
          }</code>, and lint makes sure that all of your resources are using this
          prefix. You can use variations of the name for styles and themes. For
          example for the <var>my_lib</var> prefix, you can have themes named
          <code>MyLibTheme</code>, <code>myLibAttr</code>,
          <code>my_lib_layout</code>, and so on.
          </li>
          <li>Switch to WebP: This check identifies images in your project that can
          be converted to WebP format based on your project’s
          <code>minSdkVersion</code> setting. An associated quickfix can
          automatically convert the images, or you can <a href=
          "/studio/write/convert-webp.html">convert images to WebP</a> manually.
          </li>
          <li>Unsafe WebP: If your project already includes WebP images, this check
          analyzes your project to ensure that your <code>minSdkVersion</code>
          setting is high enough to support the included images. For more
          information about WebP support in Android and Android Studio, see
          <a class="external" href=
          "https://developers.google.com/speed/webp/faq#which_web_browsers_natively_support_webp">
            Which browsers natively support WebP?</a> and <a href=
            "/studio/write/convert-webp.html">Create WebP Images Using Android
            Studio</a>.
          </li>
        </ul>
      </li>
    </ul>
    
    <h3 class="hide-from-toc">
      Changes
    </h3>
    
    <ul>
      <li>A separate button to push changes with Instant Run: After deploying your
      app, you now click <b>Apply Changes</b> <img src=
      "/studio/images/buttons/toolbar-apply-changes.svg" alt="" class=
      "inline-icon"> to quickly push incremental changes to your running app using
      Instant Run. The <b>Run</b> <img src="/studio/images/buttons/toolbar-run.png"
        alt="" class="inline-icon"> and <b>Debug</b> <img src=
        "/studio/images/buttons/toolbar-debug.png" alt="" class="inline-icon">
        buttons are always available to you when you want to reliably push your
        changes and force an app restart.
        <ul>
          <li>Instant Run is supported only when deploying your app to a target
          device running Android 5.0 (API level 21) or higher.
          </li>
          <li>Instant Run is no longer disabled for projects that <a href=
          "/studio/projects/add-native-code.html">link to external native
          projects</a> using CMake or ndk-build. However, you can only use Instant
          Run to push incremental changes to your Java code, not your native code.
          </li>
          <li>Cold swaps (which you can force for a running app by clicking
          <strong>Run</strong> <img src="/studio/images/buttons/toolbar-run.png"
          alt="" class="inline-icon">) are now more reliable. Forcing a cold swap
          also fixes the issue where changes to notification and widget UIs were
          not updated on the target device.
          </li>
          <li>Includes optimizations that make app startup much faster. These
          optimizations may affect profiling, so you should temporarily <a href=
          "/studio/run/index.html#disable-ir">disable Instant Run</a> whenever
          profiling your app.
          </li>
        </ul>
      </li>
    
      <li>
        <p>
          The <b>AVD Manager</b> <img src=
          "/studio/images/buttons/toolbar-avd-manager.png" alt="" class=
          "inline-icon"> and <b>SDK Manager</b> <img src=
          "/studio/images/buttons/toolbar-sdk-manager.png" alt="" class=
          "inline-icon"> buttons are now included in the lean Navigation Bar as
          well as the full Toolbar. To use the lean Navigation Bar, click
          <b>View</b> to open the View menu, then ensure that <b>Navigation Bar</b>
          is selected and <b>Toolbar</b> is <em>not</em> selected.
        </p>
        <img src="/studio/images/releases/navigationbar_sdkavd_2x.png" width="757">
      </li>
    
      <li>The "Hybrid" debugger has been renamed to "Dual" debugger.
      </li>
    
      <li>In the <a href="/studio/run/rundebugconfig.html">Run/Debug
      Configurations</a> dialog, under Defaults in the left pane, the following run
      configuration names have changed with no behavior changes:
        <ul>
          <li>The JUnit name has changed to Android JUnit. If you have a project
          that uses JUnit run configurations, those configurations are transformed
          to Android JUnit run configurations the first time you open the project
          with Android Studio. A dialog appears to inform you of the name change.
          </li>
          <li>The Android Tests name has changed to Android Instrumented Tests.
          </li>
        </ul>
      </li>
    
      <li>The <a href="/studio/debug/am-gpu-debugger.html">GPU Debugger</a> has
      been removed from Android Studio as of version 2.3. An open-source,
      standalone version of the tool is now available on <a href=
      "https://github.com/google/gapid" class="external-link">GitHub</a>.
      </li>
    
      <li>The Run/Debug option is no longer available when you right-click a <code>
        *.gradle build</code> script.
      </li>
    
      <li>All templates now use <code>ConstraintLayout</code> as the default
      layout.
      </li>
    
      <li>The Widgets palette in the Layout Editor has been redesigned.
      </li>
    </ul>
    
    <p>
      This release also includes a number of bug fixes. <a href=
      "https://code.google.com/p/android/issues/list?can=1&amp;q=target%3D2.3+status%3DReleased&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;cells=tiles">
      See all bug fixes in 2.3.0.</a>
    </p>
    
    <p class="note">
      <b>Known issue:</b> Some device manufacturers block apps from automatically
      launching after being installed on the device. When deploying your app to a
      physical device using Android Studio 2.3, this restriction breaks the
      intended behavior of Instant Run and causes the following error output:
      <code>Error: Not found; no service started</code>. To avoid this issue,
      either <a href="/studio/run/emulator.html">use the emulator</a> or enable
      automatic launching for your app in your device's settings. The procedure
      for doing this is different for each device, so check the instructions
      provided by the manufacturer. To learn more about this issue, see
      <a href="https://code.google.com/p/android/issues/detail?id=235879">Issue
        #235879</a>.
    </p>
    

    2.2 版 (2016 年 9 月)

    2.2.3 版 (2016 年 12 月)

    <p>
      This is a minor update to Android Studio 2.2. It includes a bug fixes
      focused around gradle, the core IDE, and lint.
    </p>
    
    <p>
      Highlighted build changes:
    </p>
    
    <ul>
      <li>ProGuard version rollback. Due to a <a href=
      "https://sourceforge.net/p/proguard/bugs/625/">correctness issue</a>
      discovered in ProGuard 5.3.1, we have rolled back to ProGuard 5.2.1. We
      have worked with the ProGuard team on getting a fix quickly, and we expect
      to roll forward to ProGuard 5.3.2 in Android Studio 2.3 Canary 3.
      </li>
      <li>Bug fix for <code>aaptOptions</code> <code>IgnoreAssetsPattern</code>
      not working properly (<a href="http://b.android.com/224167">issue
      224167</a>)
      </li>
      <li>Bug fix for Gradle autodownload for Constraint Layout library
        (<a href="https://code.google.com/p/android/issues/detail?id=212128">issue
        212128</a>)
      </li>
      <li>Bug fix for a JDK8/Kotlin compiler + dx issue (<a href=
      "http://b.android.com/227729">issue 227729</a>)
      </li>
    </ul>
    
    <p>
      <a href=
      "https://code.google.com/p/android/issues/list?can=1&amp;q=target%3D2.2.3+status%3AReleased+&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;cells=tiles">
      See all bug fixes in 2.2.3</a>.
    </p>
    

    2.2.2 版 (2016 年 10 月)

    <p>
      This is a minor update to Android Studio 2.2. It includes a number of small
      changes and bug fixes, including:
    </p>
    
    <ul>
      <li>When reporting Instant Run issues through the IDE, the report now also
      includes logcat output for <code>InstantRun</code> events. To help us
      improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
      </li>
      <li>A number of small bug fixes for Gradle.
      </li>
      <li>A fix for problems with generating multiple APKs.
      </li>
    </ul>
    

    2.2.1 版 (2016 年 10 月)

    <p>
      This is a minor update to Android Studio 2.2. It includes several bug fixes
      and a new feature to enable extra logging to help us troubleshoot Instant
      Run issues—to help us improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
    </p>
    

    新功能

    • 全新的版面配置編輯器,提供專門用於支援 ConstraintLayout 的自訂工具。
    • <li>New <strong><a href=
      "http://tools.android.com/tech-docs/layout-inspector">Layout
      Inspector</a></strong> lets you examine snapshots of your layout hierarchy
      while your app is running on the emulator or a device.
      </li>
      
      <li>New <strong><a href="/studio/write/firebase.html">Assistant</a></strong>
      window to help you integrate Firebase services into your app.
      </li>
      
      <li>New <strong><a href="/studio/debug/apk-analyzer.html">APK
      Analyzer</a></strong> tool so you can inspect the contents of your packaged
      app.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/test-recorder">Espresso Test
      Recorder</a></strong> tool (currently in beta) to help you create UI tests by
      recording your own interactions.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/build-cache">build cache</a></strong>
      (currently experimental) to speed up build performance.
      </li>
      
      <li>New <strong>C/C++ build integration with CMake and ndk-build</strong>.
      Compile and build new or existing native code into libraries packaged into
      your APK, and debug using lldb. For new projects, Android Studio uses CMake
      by default, but also supports ndk-build for existing projects. To learn how
      to include native code in your Android application, read <a href=
      "/studio/projects/add-native-code.html">Add C and C++ Code to Your
      Project</a>. To learn how to debug native code with lldb, see <a href=
      "/studio/debug/index.html#debug-native">Debug Native Code</a>.
      </li>
      
      <li>New <strong><a href="/studio/intro/index.html#sample-code">Samples
      Browser</a></strong> so you can easily look up Google Android sample code
      from within Android Studio to jump start app development.
      </li>
      
      <li>New <strong>Merged Manifest Viewer</strong> to help you diagnose how your
      manifest file merges with your app dependencies across project build
      variants.
      </li>
      
      <li>The <strong>Run</strong> window now contains log messages for the current
      running app. Note that you can configure the <a href=
      "/studio/debug/am-logcat.html">logcat Monitor</a> display, but not the
      <strong>Run</strong> window.
      </li>
      
      <li>New <strong><a href="/studio/run/emulator.html">Android
      Emulator</a></strong> features:
        <ul>
          <li>Added new <strong>Virtual</strong> <strong>Sensors</strong> and
          <strong>Cellular</strong> &gt; <strong>Signal Strength</strong> controls.
          </li>
          <li>Added an <strong>LTE</strong> option to the <strong>Cellular</strong>
          &gt; <strong>Network type</strong> control.
          </li>
          <li>Added simulated vertical swipes for scrolling through vertical menus
          with a mouse wheel.
          </li>
        </ul>
      </li>
      
      <li>New <strong><a href="/studio/run/rundebugconfig.html">Run/Debug
      Configuration</a></strong> features:
        <ul>
          <li>The <strong>Debugger</strong> tab of the Android App and Android
          Tests templates now contain several new options for debugging with LLDB.
          </li>
          <li>The <strong>Profiling</strong> tab of the Android App and Android
          Tests templates now contain a <strong>Capture GPU Commands</strong>
          option for enabling GPU tracing. You can display GPU traces in the GPU
          Debugger (a beta feature).
          </li>
          <li>The Android Tests template now has a <strong>Firebase Test Lab Device
          Matrix</strong> option for the <strong>Deployment Target</strong>.
          </li>
          <li>The Native Application template has been deprecated. If you use this
          template in a project, Android Studio automatically converts it to the
          Android App template.
          </li>
          <li>The Android Application template has been renamed to Android App.
          </li>
        </ul>
      </li>
      
      <li>Improved installation, configuration, performance, and UI features in the
      <strong><a href="/studio/debug/am-gpu-debugger.html">GPU
      Debugger</a></strong> (currently in beta).
      </li>
      
      <li>Android Studio now comes bundled with <strong>OpenJDK 8</strong>.
      Existing projects still use the JDK specified in <strong>File &gt; Project
      Structure &gt; SDK Location</strong>. You can switch to use the new bundled
      JDK by clicking <strong>File &gt; Project Structure &gt; SDK
      Location</strong> and checking the <strong>Use embedded JDK</strong>
      checkbox.
      </li>
      
      <li>Added new <strong>help menus and buttons</strong> in the UI so you can
      more easily find the online documentation.
      </li>
      

    變更內容

    • IDE 程式碼集已從 IntelliJ 15 更新為 IntelliJ 2016.1 版
    • 如要使用 Instant Run 功能,則必須安裝與目標裝置 API 級別相對應的平台 SDK。
    • 如果使用者透過工作資料夾或次要使用者身分執行應用程式,系統會自動停用 Instant Run 功能。
    • 修正 Instant Run 功能的多個穩定性問題,避免發生無法部署變更內容或應用程式異常終止的情形,具體修正的錯誤如下:
      • 部分應用程式資產未部署至執行中的應用程式 (錯誤:#213454)。
      • 如果 Serializable 類別未定義 serialVersionUID,則當使用者在切換 Instant Run 與非 Instant Run 工作階段時,應用程式會異常終止。(錯誤:#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)
    • <li>Improved performance for <strong>Gradle sync</strong> within the IDE,
      especially for large projects.
      </li>
      
      <li>Improved build times for both full and incremental builds with new app
      packaging code.
      </li>
      
      <li>Improved <strong>Jack compiler performance and features</strong>,
      including support for annotation processors and dexing in process. To learn
      more, read the <a href=
      "/studio/releases/gradle-plugin.html#revisions">Android plugin for Gradle
      2.2.0 release notes</a>.
      </li>
      
      <li>Removed the <strong>Scale</strong> AVD property from the AVD Manager.
      </li>
      
      <li>The Android Emulator <strong>-port</strong> and <strong>-ports</strong>
      command-line options now report which ports and serial number the emulator
      instance is using, and warn if there are any issues with the values you
      provided.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/create-java-class.html">Create New Class dialog</a></strong>
      and the corresponding file templates. <strong>Note:</strong> If you've
      previously customized the <strong>AnnotationType</strong>,
      <strong>Class</strong>, <strong>Enum</strong>, <strong>Interface</strong>, or
      <strong>Singleton</strong> file templates, you need to modify your templates
      to comply with the new templates or you won’t be able to use the new fields
      in the <strong>Create New Class</strong> dialog.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/vector-asset-studio.html">Vector Asset Studio</a></strong>
      user interface and added support for Adobe Photoshop Document (PSD) files.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/image-asset-studio.html">Image Asset Studio</a></strong> user
      interface.
      </li>
      
      <li>Improved the <strong>Theme Editor</strong>'s Resource Picker.
      </li>
      
      <li>Fixed memory leaks and reduced overall memory usage in Android Studio.
      </li>
      
      <li>Added a <strong>Background</strong> button in the <strong><a href=
      "/studio/intro/update.html#sdk-manager">SDK Manager</a></strong> so you can
      get back to work and install your packages in the background.
      </li>
      
      <li>Improved <strong><a href="/studio/intro/accessibility.html">Accessibility
      features</a></strong>, including support for screen readers and keyboard
      navigation.
      </li>
      
      <li>Enhanced <strong>Code Analysis</strong> includes code quality checks for
      Java 8 language usage and more cross-file analysis.
      </li>
      
      <li>Several toolbar icons have changed.
      </li>
      

    2.1 版 (2016 年 4 月)

    這個更新版本的主要變更在於提供使用 Android N 預先發布版進行開發的相關支援。

    2.1.3 版 (2016 年 8 月)

    這個更新版本加入了與 Gradle 2.14.1 版的相容性,不但改善執行效能,還提供新功能和一項重要的安全性修正。詳情請參閱 Gradle 版本資訊

    根據預設,Android Studio 2.1.3 版中的新專案會使用 Gradle 2.14.1 版。針對現有專案,IDE 會提示您升級至 Gradle 2.14.1 版,以及使用 Gradle 2.14.1 以上版本所需的 Gradle 適用的 Android 外掛程式 2.1.3 版

    2.1.2 版 (2016 年 6 月)

    這個更新版本包含幾項小幅變更並修正了一些錯誤:

    • 更新立即執行功能並修正相關錯誤。
    • 改善 LLDB 效能和異常終止通知。
    • 修正 Android Studio 2.1.1 版安全性更新中造成 git rebase 失敗的迴歸錯誤。

    2.1.1 版 (2016 年 5 月)

    安全性版本更新。

    Android N 平台現已開始支援 Java 8 語言功能,而這類功能需要使用名為 Jack 的新實驗性編譯器。目前只有 Android Studio 2.1 版支援最新版本的 Jack。因此,如果您想使用 Java 8 語言功能,就必須使用 Android Studio 2.1 版建構應用程式。

    注意:如果啟用 Jack 編譯器,系統會停用立即執行功能,因為兩者目前不相容。

    雖然 Android Studio 2.1 現為穩定版,但 Jack 編譯器仍處於實驗階段,且必須透過 build.gradle 檔案中的 jackOptions 屬性才能啟用。

    除了導入一些變更來支援 N 預先發布版以外,Android Studio 2.1 版還修正了多項小錯誤並提供下列強化項目:

    • 如果您使用 N 裝置或模擬器,並在「Debugger」分頁中為執行/偵錯設定選取「Native」偵錯工具模式,系統現在預設會啟用 Java 感知 C++ 偵錯工具。

    如需其他建構強化功能 (包括漸進式 Java 編譯和處理中的 DEX 程序),請將 Gradle 適用的 Android 外掛程式更新至 2.1.0 版。

    2.0 版 (2016 年 4 月)

    注意:如果您是為 N 開發人員預覽版進行開發作業,請使用 Android Studio 2.1 預先發布版。Android Studio 2.0 版不支援指定 N 預覽版所需的所有功能。

    Instant Run

    • Android Studio 現在能夠用比以往更快的速度部署清理建構作業。此外,您現在可以近乎即時的速度將漸進式程式碼變更推送至模擬器或實體裝置,而且可以查看更新內容,而不必重新部署新的偵錯版本,在多數情況下甚至不必重新啟動應用程式。
    • 立即執行功能支援將下列變更推送到執行中的應用程式:
      • 現有執行個體方法或靜態方法的實作方式變更。
      • 現有應用程式資源的變更
      • 結構程式碼的變更,例如方法簽章或靜態欄位的變更 (目標裝置必須搭載 API 級別 21 以上版本)。
    • 如要進一步瞭解立即執行功能,請參閱相關說明文件。

      注意事項:只有在部署偵錯變化版本、使用 Gradle 適用的 Android 外掛程式 2.0.0 以上版本,以及針對 minSdkVersion 15 以上版本設定應用程式模組層級的 build.gradle 檔案時,才能使用立即執行功能。為獲得最佳效能,請針對 minSdkVersion 21 以上版本設定應用程式。

    Lint 新增項目:

    • 現在可以使用 @IntDef 加註整數來檢查 switch 陳述式,確保系統會處理所有常數。如要快速新增任何缺少的陳述式,請使用意圖動作下拉式選單並選取「Add Missing @IntDef Constants」
    • 如果使用字串內插類型在 build.gradle 檔案中插入版本號碼,系統會針對這類錯誤加上標記。
    • 擴充 Fragment 類別的匿名類別會加上標記。
    • 如果原生程式碼在不安全的位置 (例如 res/asset/ 資料夾),系統會加上標記。這個標記可鼓勵使用者將原生程式碼儲存在 libs/ 資料夾,接著系統會在安裝期間,將該程式碼安全地封裝至應用程式的 data/app-lib/ 資料夾。Android 開放原始碼計畫:#169950
    • 不安全的 Runtime.load()System.load() 呼叫會加上標記。Android 開放原始碼計畫:#179980
    • 從選單列中依序選取「Refactor」>「Remove Unused Resources」,即可尋找並移除任何未使用的資源。未使用資源偵測功能現在支援僅由未使用資源所參照的資源、原始檔案中的參照 (例如 .html 圖片參照),以及 Gradle 資源縮減器使用的 tools:keeptools:discard 屬性,同時會將未使用的來源集 (例如其他變種版本中使用的資源) 納入考量,並妥善處理靜態欄位匯入項目。
    • 系統可檢查透過 minSdkVersion 指定的所有平台是否都支援隱式 API 參考資料。
    • 不當的 RecyclerViewParcelable 使用情形會加上標記。
    • 系統現在也會檢查 @IntDef@IntRange@Size 是否含有 int 陣列和變數引數。

    其他改進項目

    • Android Emulator 2.0 版經過最佳化,不但速度比以往更快、支援更多虛擬裝置,UI 也經過大幅改善。如要進一步瞭解新版模擬器,請參閱 SDK 工具版本資訊
    • Android 虛擬裝置管理工具改善項目:
      • 系統映像檔現在會歸入以下分頁:「Recommended」、「x86」和「Other」
      • 您可以在進階設定底下啟用多核心支援功能,並指定模擬器可使用的核心數量。
      • 您可以在進階設定底下選取下列其中一個選項,決定模擬器中的圖形轉譯方式:
        • Hardware:使用電腦的顯示卡加快轉譯速度。
        • Software:使用以軟體為基礎的轉譯方式。
        • Auto:讓模擬器決定最佳選項,這是預設設定。
    • 您可以在建構應用程式前指定部署目標,藉此縮短 AAPT 封裝時間。這可讓 Android Studio 有效率地僅封裝指定裝置所需的資源。
    • 新增 Cloud Test Lab 整合功能,讓您可隨需求進行應用程式測試,同時享有雲端服務的便利性和擴充性。進一步瞭解如何搭配使用 Cloud Test Lab 和 Android Studio
    • 新增 GPU 偵錯工具預覽功能。針對需要進行大量圖形運算的應用程式,您現在可以透過視覺化方式逐行執行 OpenGL ES 程式碼,藉此最佳化應用程式或遊戲。
    • 新增 Google 應用程式索引測試。您可以讓應用程式支援網址、應用程式索引和搜尋功能,藉此提升應用程式的流量、找出最常用的應用程式內容,以及吸引新使用者。無論要測試或驗證應用程式中的網址,全都可在 Android Studio 中進行。詳情請參閱在 Android Studio 中支援網址和應用程式索引相關說明。
    • 提供最新 IntelliJ 15 版的升級項目,包括改善程式碼分析功能和提升執行效能。如需新功能和改善項目的完整說明,請參閱 IntelliJ 的新功能
    • XML 編輯器的自動完成功能現在會在屬性處理完成後加上引號。如要檢查是否已啟用這個選項,請開啟「Settings」或「Preferences」對話方塊,依序前往「Editor」>「General」>「Smart Keys」,然後勾選「Add quotes for attribute value on attribute completion」旁邊的方塊問題:195113
    • XML 編輯器現在支援資料繫結運算式的程式碼完成功能。

    Android Studio 1.5.1 版 (2015 年 12 月)

    修正與改善項目:

    • 修正版面配置編輯器中的轉譯失敗問題。問題:194612
    • 新增透過設定變更 description 資訊清單屬性的功能。問題:194705
    • 改善 Vector Asset Studio 中 Android Studio Darcula 外觀主題的對比度。問題:191819
    • 為 Vector Asset Studio 新增「Help」(說明)按鈕支援。
    • 新增對資料繫結%運算子的支援。問題:194045
    • 修正錯誤:啟動應用程式進行偵錯時,偵錯工具會連結至錯誤的裝置。問題:195167
    • 修正錯誤:在特定情況下嘗試執行應用程式時,可能會發生空值指標例外狀況。

    Android Studio 1.5.0 版 (2015 年 11 月)

    修正與改善項目:

    • 為 Android 監控器新增記憶體監控器分析功能。查看透過這個監控器擷取的 HPROF 檔案時,系統現在會顯示更實用的資訊,讓您可更快找出記憶體流失等問題。如要使用這個監控器,請按一下主視窗底部的「Android Monitor」。在 Android 監控器中,按一下「MEMORY」分頁標籤。在監控器執行期間,按一下「Dump Java Heap」圖示,在主視窗中點選「Captures」,然後按兩下要查看的檔案。接著按一下右側的「Capture Analysis」。請注意,Android 裝置監控器無法與 Android 監控器同時執行。
    • 開始支援深層連結和應用程式連結。程式碼編輯器可針對 AndroidManifest.xml 檔案所含的深層連結自動建立意圖篩選器,還可以產生程式碼,協助您在 Java 檔案的活動中整合 App Indexing API。深層連結測試功能可驗證指定深層連結能否啟動應用程式。在「Run/Debug Configurations」對話方塊的「General」分頁中,您可以指定深層連結啟動選項。您也可以使用 Android 監控器的 logcat 顯示畫面,測試活動中的 App Indexing API 呼叫。Android lint 工具現在會針對有關深層連結和 App Indexing API 的某些問題發出警告。
    • 在程式碼編輯器中完成自訂檢視的程式碼時,您現在可以使用簡稱。
    • Vector Asset Studio 新增更多 VectorDrawable 元素的相關支援,以提供回溯相容性。Vector Asset Studio 可利用這些元素將向量可繪項目轉換為 PNG 光柵圖片,以便與 Android 4.4 (API 級別 20) 以下版本搭配使用。
    • 為 Android TV 和 Android Auto 新增 lint 檢查功能,讓您可在 Android Studio 中立即取得具體可行的回饋。此外,系統還可提供多項快速修正建議。舉例來說,如果是 Android TV,系統可回報權限、不支援的硬體、uses-feature 元素和缺少橫幅問題,並提供快速修正建議。如果是 Android Auto,系統可驗證 AndroidManifest.xml 檔案所參照的描述元檔案是否使用正確、在沒有 MediaBrowserService 類別的意圖篩選器時回報,並找出某些語音指令問題。
    • 針對不安全的廣播接收器、SSLCertificateSocketFactoryHostnameVerifier 類別使用情形,以及 File.setReadable()File.setWritable() 呼叫新增 lint 檢查功能。此外,系統也會偵測無效的資訊清單資源查詢作業 (尤其是會因設定而改變的資源)。
    • 修正多項穩定性問題。

    Android Studio 1.4.1 版 (2015 年 10 月)

    修正與改善項目:

    • 修正 Gradle 模型快取問題,這項問題可能導致系統在 IDE 重新啟動時過度進行 Gradle 同步處理作業。
    • 修正原生偵錯死結問題。
    • 修正 Subversion 1.9 版本管控系統的使用者會遭到封鎖的問題。
    • 修正在連接至未獲授權的裝置後,就無法再透過「Device Chooser」對話方塊選取模擬器的問題。問題:189658
    • 針對地區中有地區限定詞和翻譯 (但基礎語言代碼中沒有) 的語言代碼,修正翻譯錯誤回報的相關問題。問題:188577
    • 修正主題編輯器中與版面配置互動情形相關的死結問題。問題:188070
    • 修正會導致屬性無法正確更新的主題編輯器重新載入和編輯衝突。問題:187726
    • 提升主題編輯器效能。
    • 修正資訊清單中的android:required屬性遭到忽略的問題。問題:187665

    Android Studio 1.4.0 版 (2015 年 9 月)

    修正與改善項目:

    • 新增Vector Asset Studio工具,用於匯入質感設計圖示和 SVG 檔案等向量圖形。如要使用這項工具,請在「Project」視窗 Android 檢視畫面的「res」資料夾上按一下滑鼠右鍵,然後依序選取「New」>「Vector Asset」
    • 新增 Android 監控器功能、GPU 和網路。如要使用這些監控器,請按一下主視窗底部的「Android Monitor」。請注意,Android 裝置監控器無法與 Android 監控器同時執行。
    • 現可搶先體驗全新的主題編輯器。如要使用這項功能,請依序選取「Tools」>「Android」>「Theme Editor」
    • 更新設計支援資料庫的 Android 範本。範本現在支援質感設計規格,以及appcompat支援資料庫以提供回溯相容性。

    Android Studio 1.3.2 版 (2015 年 8 月)

    修正與改善項目:

    • 新增對 Android 6.0 (API 級別 23) 的支援,包括提供新的圖示和 AVD Manager 支援,讓您可建立採用新螢幕密度的裝置。
    • 修正檢查更新時發生的例外狀況。問題:183068
    • 修正問題:未解析的檢視座標可能會導致版面配置編輯器停止運作。問題:178690
    • 修正無效資源類型警告的相關問題。問題:182433
    • 修正誤將資源標記為不公開資源的 Lint 檢查。問題:183120

    Android Studio 1.3.1 版 (2015 年 8 月)

    修正與改善項目:

    • 修正在 Windows 上建立 Android Wear Android 虛擬裝置 (AVD) 的支援。
    • 「專案精靈」已更新,現在會使用所輸入的專案名稱。
    • 現在可將 Android SDK 儲存在唯讀目錄中。
    • Gradle 適用的 Android 外掛程式版本已更新至 1.3.0 版。
    • 修正透過 Android Debug Bridge (adb) Unix 殼層啟動偵錯工作階段時發生的問題。
    • 修正 Java 套件重新命名訊息以顯示正確的套件名稱。

    Android Studio 1.3.0 版 (2015 年 7 月)

    修正與改善項目:

    • 新增透過 Android Studio 在應用程式中啟用開發人員服務 (例如Google AdMobAnalytics) 的選項。
    • 新增其他註解,例如@RequiresPermission@CheckResults@MainThread
    • 新增透過記憶體監控器產生 Java 記憶體快照資料和分析執行緒配置的功能。您也可以在 Android Studio 中,將 Android 專用的 HPROF 二進位格式檔案轉換為標準 HPROF 格式。
    • SDK Manager整合到 Android Studio 中以簡化套件與工具存取流程,並提供更新通知。

      注意:獨立的 SDK Manager 仍可透過指令列存取,但只建議與獨立安裝的 SDK 搭配使用。

    • 在模擬器主控台中新增finger指令,用於模擬指紋驗證作業。
    • 新增<public>資源宣告,將程式庫資源指定為公開和不公開資源。

      注意事項:必須使用Gradle 適用的 Android 外掛程式1.3 以上版本。

    • 新增資料繫結支援功能,用於建立將應用程式邏輯繫結至版面配置元素的宣告式面配置。
    • 新增對獨立測試 APK 模組的支援,讓您可在 Android Studio 中建構測試 APK。
    • 更新AVD Manager以加入 HAXM 最佳化內容,並改善相關通知。
    • 新增對QEMU2.1 版的 64 位元 ARM 和 MIPS 模擬器支援。
    • 加入快速修正方法 (例如自動產生Parcelable 實作項目),簡化 Lint 警告的解決流程。
    • 新增即時範本支援,讓您快速插入程式碼片段。

    Android Studio 1.2.2 版 (2015 年 6 月)

    修正與改善項目:

    • 修正導致建構作業無法完成的建構問題。

    Android Studio 1.2.1 版 (2015 年 5 月)

    修正與改善項目:

    • 修正效能和功能方面的小問題。

    Android Studio 1.2.0 版 (2015 年 4 月)

    修正與改善項目:

    • 更新 Android 執行階段視窗,加入記憶體監控器工具並新增 CPU 效能監控分頁。
    • 在左側邊界新增「Captures」分頁,用來顯示擷取的記憶體和 CPU 效能資料檔案,例如 CPU 方法追蹤和記憶體堆積快照。
    • 擴大註解支援,現在提供額外的中繼資料註解,以及推論出來的「是否可為空值」註解。
    • 強化翻譯編輯器,支援採用 3 字母語言和區碼的最佳做法 (BCP) 47。
    • 整合 IntelliJ 14 和 14.1 功能,改善程式碼分析與執行效能:
      • 強化偵錯功能,可顯示變數和參照物件的內嵌值,並可針對 lambda 和運算子運算式執行內嵌評估。
      • 新增分頁和縮排大小的程式碼樣式偵測功能。
      • 新增暫用檔案,可在沒有專案檔案的情況下進行程式碼實驗和原型設計。
      • 新增同步插入 HTML 和 XML 檔案開頭/結尾標記的功能。
      • 新增內建的 Java 類別反編譯器,讓您可查看原始碼不支援的程式庫所含的內容。

      如需新功能和改善項目的完整說明,請參閱IntelliJ 的新功能

    • 針對「Scratches」、「Project Files」、「Problems」、「Production」和「Tests」新增額外專案檢視畫面,強化專案管理和存取功能。
    • 改善「File」>「Settings」選單和對話方塊,進一步協助您存取及管理設定。
    • 開始支援 Windows 和 Linux 的高密度螢幕。
    • 新增對 res/drawable-280dpi/ 資料夾中 280 dpi 資源的支援功能。

    Android Studio 1.1.0 版 (2015 年 2 月)

    這個版本包含多個修正及改善項目:

    • 新增對 Android Wear 手錶範本的支援。
    • 修改新專案和模組建立流程,加入適用於密度專屬啟動器圖示的 res/mipmap 資料夾。這些 res/mipmap 資料夾會取代啟動器圖示的 res/drawable 資料夾。
    • 更新啟動器圖示,使其具有符合 Material Design 的外觀,並新增 xxxhdpi 啟動器圖示。
    • 針對地區和語言組合、啟動器圖示、資源名稱和其他常見程式碼問題,新增及改善 Lint 檢查功能。
    • 新增對現行最佳做法 (BCP) 語言標記 47 的支援。

    Android Studio 1.0.1 版 (2014 年 12 月)

    這個版本包含多個修正及改善項目:

    • 修正 AVD Manager 和 device.xml 檔案鎖定問題。
    • 修正 Windows 系統上的模擬器記錄。
    • 修正問題:在 Windows 系統上,如果 Android Studio 和 Android SDK 安裝在不同磁碟,建立 AVD 時會發生問題。
    • 將新下載項目的預設更新版本設為「Stable」。如果您安裝了 Android Studio 1.0.0 版,並想要更新可用於實際工作環境的穩定版本,請依序點選「File」>「Settings」>「Updates」,將設定變更為「穩定版」更新版本。

    Android Studio 1.0 版 (2014 年 12 月)

    這是 Android Studio 的初始版本。

    Android Studio 0.8.14 版 (2014 年 10 月)

    如需完整變更內容清單,請前往 tools.android.com

    Android Studio 0.8.6 版 (2014 年 8 月)

    如需完整變更內容清單,請前往 tools.android.com

    Android Studio 0.8.0 版 (2014 年 6 月)

    新增對 Android Wear 專案的支援。

    如需完整變更內容清單,請前往 tools.android.com

    Android Studio 0.5.2 版 (2014 年 5 月)

    Android Studio 0.4.6 版 (2014 年 3 月)

    Android Studio 0.4.2 版 (2014 年 1 月)

    Android Studio 0.3.2 版 (2013 年 10 月)

    Android Studio 0.2.x 版 (2013 年 7 月)

    • 整合最新的 IntelliJ 程式碼集變更。修正 Studio 使用者回報的問題,例如調整 Linux 字型大小,以及解決字型顯示問題。
    • Android Gradle 外掛程式已更新至 0.5.0 版。

      注意:這個新版本不具有回溯相容性。開啟使用舊版外掛程式的專案時,Studio 會顯示錯誤,指出「Gradle <project_name> project refresh failed」

      新版 Gradle 外掛程式包含下列變更:

      • 修正 IDE 模型以包含輸出檔案,即使已透過 DSL 自訂也一樣。此外,這個版本也修正了 DSL,以取得/設定變化版本物件的輸出檔案,讓您不必再使用 variant.packageApplication or variant.zipAlign
      • 修正依附元件解析問題,讓系統解析預設設定、建構類型和變種版本的組合,而非分別解析各個項目。
      • 修正程式庫專案測試的依附元件,以正確納入程式庫本身的所有依附元件。
      • 修正兩個依附元件具有相同葉名的情況。
      • 修正 ProGuard 規則檔案無法套用到變種版本的問題。

      如需所有 Gradle 外掛程式版本資訊,請前往 http://tools.android.com/tech-docs/new-build-system

    • aapt 的 Gradle 錯誤不再指向 build/ 資料夾中的合併輸出檔案,而會指向實際來源位置。
    • 平行建構功能:您現在可以使用 Gradle 的平行建構功能。請注意,平行建構功能仍在開發階段,詳情請參閱 Gradle 說明文件。這項功能預設為停用。如要啟用這項功能,請依序前往「Preferences」>「Compiler」,然後勾選「Compile independent modules in parallel」方塊。
    • 進一步打造及改善相關功能,例如用於轉譯版面配置的新資源存放區、編輯器中的資源折疊等:
      • 針對 .aar 程式庫依附元件提供基本支援 (例如在沒有本機來源副本的情況下使用程式庫),但仍不支援資源編輯器中的資源 XML 驗證和導覽。
      • 資源參照中的週期偵測。
      • 快速說明文件 (F1) 可顯示插入點下方字串的所有翻譯,且現在還會顯示各種 Gradle 變種版本、建構類型及程式庫的所有資源重疊元素。這些內容會以相反資源重疊元素順序列出,且遭遮蓋的字串版本會加上刪除線。
      • 提供修正檔,讓系統在模組依附元件集變更時,能夠處理合併資源的更新作業。
      • 提供 XML 轉譯修正檔,讓系統能妥善處理字元實體宣告內容,以及 XML 和萬國碼 (Unicode) 逸出情形。
    • 針對版面配置預覽和版面配置編輯器視窗,提供儲存螢幕截圖的支援功能。
    • 修正範本錯誤。
    • 修正 Lint 錯誤。
    • 修正當機報告中提及的多項錯誤。謝謝您,請繼續提交當機報告!

    Android Studio 0.1.x 版 (2013 年 5 月)

    • 修正多項錯誤,包括常見的 Windows 安裝問題。

    舊版 Android Gradle 外掛程式

    3.6.0 版 (2020 年 2 月)

    這個版本的 Android 外掛程式須使用下列項目:

    新功能

    此版本的 Android Gradle 外掛程式內附以下新功能。

    檢視區塊繫結

    參照程式碼中的檢視區塊時,檢視區塊繫結可提供安全的編譯時間。您現在可以將 findViewById() 替換為自動產生的繫結類別參照了。如要開始使用檢視區塊繫結,請在所有模組的 build.gradle 檔案中加入以下內容:

          android {
              viewBinding.enabled = true
          }
          
          android {
              viewBinding.enabled = true
          }
          

    詳情請參閱檢視區塊繫結說明文件

    支援 Maven Publish 外掛程式

    Android Gradle 外掛程式提供對 Maven Publish Gradle 外掛程式的支援功能,因此您可以將建構構件發布至 Apache Maven 存放區。Android Gradle 外掛程式會為應用程式或程式庫模組中的每個建構變數構件建立元件,方便您用來自訂 Maven 存放區的發布內容

    如要瞭解詳情,請參閱使用 Maven Publish 外掛程式的相關說明。

    全新的預設封裝工具

    建構應用程式的偵錯版本時,外掛程式會使用名為「zipflinger」的新封裝工具來建構 APK。這個新工具應該可以提升建構速度。如果這項新封裝工具的運作情形不如預期,請回報錯誤。如要改回使用舊版封裝工具,可以在 gradle.properties 檔案中加入以下內容:

            android.useNewApkCreator=false
          
    原生建構歸因

    您現在可以判斷 Clang 建構及連結專案中每個 C/C++ 檔案所需的時間。Gradle 可以輸出 Chrome 追蹤記錄,當中包含這些編譯器事件的時間戳記,可讓您進一步瞭解建構專案所需的時間。如要輸出這個建構歸因檔案,請按照下列方式操作:

    1. 在執行 Gradle 建構作業時加入 -Pandroid.enableProfileJson=true 標記。例如:

      gradlew assembleDebug -Pandroid.enableProfileJson=true

    2. 開啟 Chrome 瀏覽器,然後在搜尋列中輸入 chrome://tracing

    3. 按一下「Load」按鈕,然後前往 <var>project-root</var>/build/android-profile 尋找檔案,檔案名稱為 profile-<var>timestamp</var>.json.gz

    檢視器的頂端附近會顯示原生建構歸因資料,如下所示:

    Chrome 內的原生建構歸因追蹤記錄

    行為變更

    使用這個版本的外掛程式時,您可能會遇到下列行為異動。

    預設以未壓縮方式封裝原生資料庫

    建構應用程式時,外掛程式現在預設會將 extractNativeLibs 設為 "false"。這表示原生資料庫會對齊頁面,並以未壓縮的方式封裝。儘管這樣會導致上傳大小較大,但您的使用者可以享有下列好處:

    • 由於平台可以直接透過安裝的 APK 存取原生資料庫,無須建立資料庫副本,因此能縮減應用程式安裝大小。
    • 由於 Play 商店的壓縮方式,通常會在 APK 或 Android App Bundle 內含未壓縮原生資料庫的情況下效果較佳,因此能縮減下載大小。

    如果想讓 Android Gradle 外掛程式改為封裝經過壓縮的原生資料庫,請在應用程式的資訊清單中加入以下內容:

            <application
              android:extractNativeLibs="true"
              ... >
            </application>
            
          

    注意:extractNativeLibs 資訊清單屬性已由 useLegacyPackaging DSL 選項取代。詳情請參閱版本資訊的使用 DSL 封裝壓縮的原生資料庫相關說明。

    預設 NDK 版本

    現在如果您下載了多個 NDK 版本,則 Android Gradle 外掛程式會選取在編譯原始碼檔案時要用的預設版本。外掛程式以往會選用最新下載的 NDK 版本。您可以使用模組 build.gradle 檔案中 android.ndkVersion 屬性,覆寫外掛程式選取的預設版本。

    簡化 R 類別產生作業

    Android Gradle 外掛程式簡化了編譯類別路徑,方法是只為專案的每個程式庫模組產生一個 R 類別,並與其他模組依附元件共用這些 R 類別。這項最佳化功能應該可以提升建構速度,但您必須留意以下事項:

    • 由於編譯器會和上游模組依附元件共用 R 類別,因此專案內每個模組都必須使用不重複的套件名稱。
    • 其他專案依附元件的程式庫 R 類別瀏覽權限,視用於納入該程式庫做為依附元件的設定而定。舉例來說,假設程式庫 A 納入程式庫 B 做為「api」依附元件,則程式庫 A 和其他依附程式庫 A 的程式庫都有權存取程式庫 B 的 R 類別。不過如果發生以下情況,其他程式庫便可能無法存取程式庫 B 的 R 類別:程式庫 A 使用 implementation 依附元件設定。詳情請參閱「依附元件設定」一文。
    移除預設設定缺少的資源

    如果您在 Library 模組中加入未納入預設資源集的語言資源 (舉例來說,如果您在 /values-es/strings.xml 中加入 hello_world 做為字串資源,但並未在 /values/strings.xml 中定義該項資源),則 Android Gradle 外掛程式編譯專案時不會再納入該項資源。這項行為變更應該可以減少發生 Resource Not Found 執行階段例外狀況,並提升建構速度。

    D8 現在會遵循註解適用的 CLASS 資料保留政策

    現在編譯應用程式時,D8 會遵循註解套用的 CLASS 資料保留政策,而且無法再在執行階段使用這些註解。這種運作方式也適用於將應用程式的目標 SDK 設為 API 級別 23 的情況;先前當您透過舊版 Android Gradle 外掛程式和 D8 編譯應用程式時,這項設定允許在執行階段存取這些註解。

    其他行為變更
    • aaptOptions.noCompress 在所有平台都不會再區分大小寫 (適用於 APK 和套件),並且會遵循使用大寫字元的路徑。
    • 資料繫結現在預設為漸進式。詳情請參閱問題 #110061530

    • 現在包括 Robolectric 單元測試在內的所有單元測試都可以完整快取了。詳情請參閱問題 #115873047

    修正錯誤

    這個版本的 Android Gradle 外掛程式修正了以下錯誤:

    • 使用資料繫結的程式庫模組現已支援 Robolectric 單元測試。詳情請參閱問題 #126775542
    • 現在可以在啟用 Gradle 平行執行模式的情況下,跨多個模組執行 connectedAndroidTest 工作。

    已知問題

    本節說明 Android Gradle 外掛程式 3.6.0 版的已知問題。

    Android Lint 工作的效能不佳

    由於剖析基礎架構內發生迴歸現象,因此 Android Lint 可能需要花費更長的時間才能完成部分專案,進而導致某些程式碼結構中的 lambda 推測類型計算速度變慢。

    此問題已回報為 IDEA 錯誤,且將在 Android Gradle 外掛程式 4.0 版中修正。

    缺少資訊清單類別 {:#agp-missing-manifest}

    如果應用程式在資訊清單中定義自訂權限,則 Android Gradle 外掛程式通常會產生 Manifest.java 類別,以便將自訂權限加入為字串常數。外掛程式會將此類別封裝至應用程式,方便您在執行階段參照這些權限。

    在 Android Gradle 外掛程式 3.6.0 版中,產生這個資訊清單類別的功能無法運作。如果您使用這個外掛程式版本建構應用程式,且應用程式參照該資訊清單類別,就可能會發生 ClassNotFoundException 例外狀況。如要解決這個問題,請按照下列其中一種做法進行:

    • 依自訂權限的完整名稱參照這些權限。例如:"com.example.myapp.permission.DEADLY_ACTIVITY"

    • 自行定義常數,如下所示:

                  public final class CustomPermissions {
                    public static final class permission {
                      public static final String DEADLY_ACTIVITY="com.example.myapp.permission.DEADLY_ACTIVITY";
                    }
                  }
                  
                

    3.5.0 版 (2019 年 8 月)

    Android Studio 3.5 版同時推出的 Android Gradle 外掛程式 3.5.0 版是主要版本,也是 Project Marble 的成果。這個版本著重於改善 Android 開發人員工具的三大面向:系統健康狀態、功能改進及錯誤修正。值得注意的是,本次更新特別注重提升專案建構速度

    如要進一步瞭解相關資訊和其他 Project Marble 最新消息,請參閱 Android 開發人員網誌文章或下方各節。

    這個版本的 Android 外掛程式須使用下列項目:

    3.5.4 版 (2020 年 7 月)

    本次要更新版本支援新預設設定的相容性,以及 Android 11 套件瀏覽權限的功能。

    詳情請參閱 4.0.1 版本資訊

    3.5.3 版 (2019 年 12 月)

    這個次要更新版本支援 Android Studio 3.5.3 版,並提供多項錯誤修正和效能改善項目。

    3.5.2 版 (2019 年 11 月)

    這個次要更新版本支援 Android Studio 3.5.2 版,並提供多項錯誤修正和效能改善項目。如要查看重要錯誤修正清單,請參閱版本更新網誌上的相關文章。

    3.5.1 版 (2019 年 10 月)

    這個次要更新版本支援 Android Studio 3.5.1 版,並提供多項錯誤修正和效能改善項目。如要查看重要錯誤修正清單,請參閱版本更新網誌上的相關文章。

    漸進式註解處理

    如果您在 gradle.properties 檔案中設定 android.databinding.incremental=true,則資料繫結註解處理工具可支援漸進式註解處理功能。這項最佳化功能可以提升漸進式建構作業的效能。如需最佳化註解處理工具的完整清單,請參閱漸進式註解處理工具相關表格。

    此外,KAPT 1.3.30 以上版本也支援漸進式註解處理工具,只要在 gradle.properties 檔案中加入 kapt.incremental.apt=true 即可啟用這項功能。

    可快取單元測試

    includeAndroidResources 設為 true,讓單元測試能夠使用 Android 資源、資產以及資訊清單後,Android Gradle 外掛程式便會產生測試設定檔,而其中所含的絕對路徑會導致快取無法重新定位。只要在 gradle.properties 檔案中加入以下內容,指示外掛程式改為使用相對路徑產生測試設定,即可完整快取 AndroidUnitTest 工作:

          android.testConfig.useRelativePath = true
        

    已知問題

    • 使用 Kotlin Gradle 外掛程式 1.3.31 以下版本時,您可能會在建構或同步處理專案時看到以下警告訊息:

                WARNING: API 'variant.getPackageLibrary()' is obsolete and has been replaced
                        with 'variant.getPackageLibraryProvider()'.
                
              

      如要解決這個問題,請將外掛程式升級為 1.3.40 以上版本。

    3.4.0 版 (2019 年 4 月)

    這個版本的 Android 外掛程式須使用下列項目:

    3.4.3 版 (2020 年 7 月)

    本次要更新版本支援新預設設定的相容性,以及 Android 11 套件瀏覽權限的功能。

    詳情請參閱 4.0.1 版本資訊

    3.4.2 版 (2019 年 7 月)

    這個次要更新版本支援 Android Studio 3.4.2 版,並提供多項錯誤修正和效能改善項目。如要查看重要錯誤修正清單,請參閱版本更新網誌上的相關文章。

    3.4.1 版 (2019 年 5 月)

    這個次要更新版本支援 Android Studio 3.4.1 版,並提供多項錯誤修正和效能改善項目。如要查看重要錯誤修正清單,請參閱版本更新網誌上的相關文章。

    新功能

    • 新的 Lint 檢查依附元件設定:我們已變更 lintChecks 的行為,並導入新的依附元件設定 lintPublish,讓您能精確掌控 Android 程式庫要封裝哪些 Lint 檢查項目。

      • lintChecks:此為現有設定,用於您只想在本機建構專案時執行的程式碼檢查項目。如果您先前是使用 lintChecks 依附元件設定,在已發布的 AAR 中加入 Lint 檢查項目,則您必須將這些依附元件改為使用如下所述的 lintPublish 新設定。
      • lintPublish:如要在已發布的 AAR 中加入 Lint 檢查項目,請在程式庫專案中使用這項新設定 (如下所示)。這表示使用該程式庫的專案現在也會套用這些程式碼檢查項目。

      以下程式碼範例會在本機 Android 程式庫專案中同時使用兩種依附元件設定。

      dependencies {
        // Executes lint checks from the ':lint' project at build time.
        lintChecks project(':lint')
        // Packages lint checks from the ':lintpublish' in the published AAR.
        lintPublish project(':lintpublish')
      }
              
      dependencies {
        // Executes lint checks from the ':lint' project at build time.
        lintChecks(project(":lint"))
        // Packages lint checks from the ':lintpublish' in the published AAR.
        lintPublish(project(":lintpublish"))
          }
              
      • 一般來說,封裝和簽署工作的整體建構速度應該都能獲得提升。如果您發現這些工作發生效能迴歸現象,請回報問題

    行為變更

    • Android 免安裝應用程式功能外掛程式淘汰警告:如果您仍在使用 com.android.feature 外掛程式建構免安裝應用程式,Android Gradle 外掛程式 3.4.0 版便會向您發出淘汰警告。如要確保您仍然可以透過未來版本的外掛程式建構免安裝應用程式,請遷移免安裝應用程式以便改用動態功能外掛程式,這個外掛程式也能讓您透過單一 Android App Bundle 發布安裝應用程式和免安裝應用程式體驗。

    • 預設啟用 R8:R8 將脫糖、縮減、模糊化、最佳化以及 DEX 處理整合為單一步驟,結果讓建構效能獲得大幅提升。R8 是在 Android Gradle 外掛程式 3.3.0 版導入,現在凡是使用外掛程式 3.4.0 以上版本的應用程式和 Android 程式庫專案都會預設啟用這項工具。

    下圖概略說明導入 R8 之前的編譯程序。

    在導入 R8 之前,ProGuard 是與 DEX 和脫糖不同的編譯步驟。

    現在有了 R8,脫糖、縮減、模糊化、最佳化和 DEX 處理 (D8) 全都可透過單一步驟完成,如下圖所示。

    透過 R8,您只要執行一個編譯步驟,就能進行脫糖、縮減、模糊化、最佳化和 DEX 處理。

    提醒您,R8 能夠與現有 ProGuard 規則搭配運作,因此您可能不需要採取任何行動就能享有 R8 的好處。不過,由於這與專為 Android 專案設計的 ProGuard 是不同的技術,因此在進行縮減和最佳化時,可能會導致原先 ProGuard 不會移除的程式碼遭到移除。在這類罕見情況下,您可能必須新增額外規則,讓建構輸出內容保留該程式碼。

    如果您在使用 R8 時遇到問題,請參閱 R8 相容性常見問題,看看是否有該問題的解決方案。如果當中沒有提供解決方案,請回報錯誤。您可以在專案的 gradle.properties 檔案中加入下列其中一行程式碼來停用 R8:

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

    注意:針對特定建構類型,如果您在應用程式模組的 build.gradle 檔案中將 useProguard 設為 false,則不論您是否有在專案的 gradle.properties 檔案中停用 R8,Android Gradle 外掛程式都會使用 R8 縮減該建構類型的應用程式程式碼。

    • ndkCompile 已淘汰:如果您嘗試使用 ndkBuild 編譯原生資料庫,將會收到建構錯誤。建議您改用 CMake 或 ndk-build,為專案新增 C 和 C++ 程式碼

    已知問題

    • 目前尚未強制使用不重複的套件名稱,不過日後的外掛程式版本將會嚴格規定。在 Android Gradle 外掛程式 3.4.0 版中,只要在 gradle.properties 檔案中加入以下這一行,即可選擇使用檢查功能,以確認專案所宣告的是否為系統可接受的套件名稱。

                android.uniquePackageNames = true
                
              

      如要進一步瞭解如何透過 Android Gradle 外掛程式設定套件名稱,請參閱「設定應用程式 ID」一節。

    3.3.0 版 (2019 年 1 月)

    這個版本的 Android 外掛程式須使用下列項目:

    3.3.3 版 (2020 年 7 月)

    本次要更新版本支援新預設設定的相容性,以及 Android 11 套件瀏覽權限的功能。

    詳情請參閱 4.0.1 版本資訊

    3.3.2 版 (2019 年 3 月)

    這個次要更新版本支援 Android Studio 3.3.2 版,並提供多項錯誤修正和效能改善項目。如要查看重要錯誤修正清單,請參閱版本更新網誌上的相關文章。

    3.3.1 版 (2019 年 2 月)

    這個次要更新版本支援 Android Studio 3.3.1 版,並提供多項錯誤修正和效能改善項目。

    新功能

    • 改進類別路徑同步處理作業:Android Gradle 外掛程式在解析執行階段和編譯時間類別路徑的依附元件時,會嘗試針對出現在多個類別路徑的依附元件,修正某些下游版本衝突問題。

      舉例來說,當執行階段類別路徑內含程式庫 A 2.0 版,而編譯類別路徑內含程式庫 A 1.0 版,此時外掛程式會自動將編譯類別路徑內的依附元件更新為程式庫 A 2.0 版,防止發生錯誤。

      不過,假如執行階段類別路徑內含程式庫 A 1.0 版,而編譯類別路徑內含程式庫 A 2.0 版,則外掛程式不會將編譯類別路徑的依附元件降級為程式庫 A 1.0 版,因此您會收到錯誤訊息。詳情請參閱「修正類別路徑之間的衝突」一節。

    • 改善使用註解處理工具時的漸進式 Java 編譯功能:這項更新改善了使用註解處理工具時對漸進式 Java 編譯的支援功能,從而縮短建構時間。

      注意:這項功能與 Gradle 4.10.1 以上版本相容,但 Gradle 5.1 版除外 (原因請參閱 Gradle 問題 8194)。

      • 針對使用 Kapt 的專案 (多數僅使用 Kotlin 的專案以及 Kotlin-Java 混合型專案):無論您是否使用資料繫結或 retro-lambda 外掛程式,系統都會啟用漸進式 Java 編譯功能。由 Kapt 工作進行的註解處理作業尚非漸進式。

      • 針對未使用 Kapt 的專案 (僅使用 Java 的專案):如果您使用的註解處理工具皆可支援漸進式註解處理,則系統預設會啟用漸進式 Java 編譯功能。如要監控漸進式註解處理工具的採用情形,請參閱 Gradle 問題 5277

        不過,要是有一或多個註解處理工具不支援漸進式建構作業,系統便不會啟用漸進式 Java 編譯功能。您可以改為在 gradle.properties 檔案中加入以下標記:

        android.enableSeparateAnnotationProcessing=true
                    

        加入這個標記後,Android Gradle 外掛程式便會在另一個獨立的工作中執行註解處理工具,讓 Java 編譯工作能夠以漸進方式執行。

    • 在使用過時 API 時提供更完善的偵錯資訊:現在當外掛程式偵測到您使用的是不再受支援的 API 時,可以提供更詳細的資訊來協助您判斷使用該 API 的位置。如果想查看這類額外資訊,您必須在專案的 gradle.properties 檔案中加入以下內容:

                android.debug.obsoleteApi=true
              

      您也可以透過指令列傳送 -Pandroid.debug.obsoleteApi=true,啟用這個標記。

    • 您可以透過指令列對功能模組執行檢測設備測試。

    行為變更

    • 延遲工作設定:外掛程式現在會使用新的 Gradle 工作建立 API,避免為目前建構作業不需要完成的工作 (或不在執行工作圖上的工作) 執行初始化和設定工作。舉例來說,假設您有多個建構變數 (例如「release」和「debug」建構變數),且要建構應用程式的「debug」版本,則外掛程式會避免為應用程式的「release」版本執行初始化和設定工作。

      呼叫 Variants API 中的某些較舊的方法 (如 variant.getJavaCompile()) 時,系統可能仍會強制執行工作設定。為確保建構作業已針對延遲工作設定進行最佳化,請叫用會改為傳回 TaskProvider 物件的新方法,例如 variant.getJavaCompileProvider()

      如果您要執行自訂建構工作,建議您瞭解如何根據新的 Gradle 工作建立 API 進行調整

    • 現在針對特定建構類型設定 useProguard false 時,外掛程式不會使用 ProGuard,而是使用 R8 來縮減及模糊化應用程式的程式碼和資源。如要進一步瞭解 R8,請參閱 Android 開發人員網誌的這篇網誌文章

    • 加快程式庫專案的 R 類別產生程序:先前 Android Gradle 外掛程式會逐一為專案內的所有依附元件產生 R.java 檔案,再跟應用程式的其他類別一起編譯這些 R 類別。外掛程式現在會產生 JAR,其中直接含有應用程式編譯過的 R 類別,無須先建構 R.java 中繼類別。這項最佳化功能有望大幅改善內含多個程式庫子專案及依附元件的專案建構效能,同時還能提升 Android Studio 建立索引的速度。

    • 建構 Android App Bundle 時,由該應用程式套件產生且指定 Android 6.0 (API 級別 23) 以上版本的 APK,現在預設會加入原生資料庫的未壓縮版本。這項最佳化功能可避免讓裝置發生需要建立資料庫副本的情形,藉此減少應用程式的磁碟占用量,如果您想停用這項最佳化功能,請在 gradle.properties 檔案中加入以下內容:

      android.bundle.enableUncompressedNativeLibs = false
              
    • 外掛程式會強制執行部分第三方外掛程式的最低需求版本。

    • 單一變數專案同步處理:如要讓 Android Studio 瞭解專案結構,將專案與建構設定進行同步處理是相當重要的步驟。不過,對大型專案而言,這項程序可能相當耗時。如果專案使用多個建構變數,您現在可以只同步處理目前所選的變數,藉此最佳化專案同步處理作業。

      如要啟用這項最佳化功能,您必須使用 Android Studio 3.3 以上版本搭配 Android Gradle 外掛程式 3.3.0 以上版本。假如您符合這些需求條件,IDE 會在您同步處理專案時提示您啟用這項最佳化功能。此外,新專案也會預設啟用這項最佳化功能。

      如要手動啟用這項最佳化功能,請依序點選「File」>「Settings」>「Experimental」>「Gradle」(在 Mac 上應依序點選「Android Studio」>「Preferences」>「Experimental」>「Gradle」),接著勾選「Only sync the active variant」核取方塊。

      注意:這項最佳化功能可完整支援包含 Java 和 C++ 語言的專案,也可對 Kotlin 語言提供部分支援。對包含 Kotlin 內容的專案啟用最佳化功能時,Gradle 同步處理會在內部改回使用完整的變數。

    • 自動下載缺少的 SDK 套件:我們已加強這項功能,使其支援 NDK。詳情請參閱「透過 Gradle 自動下載缺少的套件」一節。

    修正錯誤

    • Android Gradle 外掛程式 3.3.0 版修正了下列問題:

      • 儘管已啟用 Jetifier,建構程序還是會呼叫 android.support.v8.renderscript.RenderScript,而不是 AndroidX 版本
      • 由於 androidx-rs.jar 內含靜態封裝的 annotation.AnyRes 而發生衝突
      • 使用 RenderScript 時,不再需要手動在 build.gradle 檔案中設定建構工具版本了

    3.2.0 版 (2018 年 9 月)

    這個版本的 Android 外掛程式須使用下列項目:

    3.2.1 版 (2018 年 10 月)

    本次更新後,您不再需要指定 SDK 建構工具的版本了。Android Gradle 外掛程式現在預設會使用 28.0.3 版。

    新功能

    • 對 Android App Bundle 提供建構支援:應用程式套件是全新的上傳格式,其中包含應用程式所有已編譯的程式碼和資源,但是需要較長的處理時間,才能產生及簽署 APK,發布到 Google Play 商店上。您不必再建構、簽署及管理多個 APK,而且還能縮小使用者下載的應用程式大小,並針對他們的裝置進行最佳化處理。詳情請參閱「關於 Android App Bundle」一文。

    • 支援在使用註解處理工具時提升漸進式建構速度:AnnotationProcessorOptions DSL 現在擴充了 CommandLineArgumentProvider 的功能,讓您或註解處理工具作者能夠使用漸進式建構屬性類型註解,為處理工具的引數加上註解。這些註解可以改善漸進式與快取清理建構作業的正確性和效能。詳情請參閱「將引數傳送至註解處理工具」一節。

    • AndroidX 適用的遷移工具:搭配 Android 3.2 以上版本使用 Android Gradle 外掛程式 3.2.0 版時,您可以從選單列中依序點選「Refactor」>「Migrate to AndroidX」,讓專案的本機依附元件和 Maven 依附元件改為使用新的 AndroidX 程式庫。使用這項遷移工具也會將 gradle.properties 檔案中以下標記設為 true

      • android.useAndroidX設為 true 時,Android 外掛程式會使用適當的 AndroidX 程式庫,而不是支援資料庫。如未指定此標記,則外掛程式預設會將其設為 false

      • android.enableJetifier設為 true 時,Android 外掛程式會自動重新編寫現有第三方程式庫的二進位檔,讓這些程式庫改用 AndroidX。如未指定此標記,則外掛程式預設會將其設為 false。您只能在 android.useAndroidX 也設為 true 的情況下將這個標記設為 true,否則就會發生建構錯誤。

        詳情請參閱「AndroidX 總覽」一文。

    • 全新的 R8 程式碼縮減器:R8 是取代 ProGuard 的新工具,用於將程式碼的縮減與模糊處理。如要開始使用 R8 預先發布版,請在專案的 gradle.properties 檔案中加入以下內容:

              android.enableR8 = true
              
              android.enableR8 = true
              

    行為變更

    • 目前已預設啟用 D8 脫糖。

    • Google 的 Maven 存放區現已開始提供 AAPT2。如要使用 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()
                  }
                
                buildscript {
                      repositories {
                          google() // here
                          jcenter()
                      }
                      dependencies {
                          classpath 'com.android.tools.build:gradle:3.2.0'
                      }
                  }
                  allprojects {
                      repositories {
                          google() // and here
                          jcenter()
                  }
                
    • 目前已預設啟用原生 multidex。將偵錯版本的應用程式部署至搭載 Android API 級別 21 以上的裝置時,舊版的 Android Studio 會啟用原生 multidex。現在,無論您要部署至裝置,還是要建構發布用的 APK,Android Gradle 外掛程式都會為設定 minSdkVersion=21 以上版本的所有模組啟用原生 multidex。

    • 外掛程式現在會強制執行最低版本需求:protobuf 外掛程式 (0.8.6)、Kotlin 外掛程式 (1.2.50) 以及 Crashlytics 外掛程式 (1.25.4)。

    • 現在指定模組名稱時,功能模組外掛程式 com.android.feature 會強制只能使用字母、數字和底線。例如,如果功能模組名稱含有半形破折號,就會發生建構錯誤。此行為與動態功能外掛程式的行為相符。

    修正錯誤

    • JavaCompile 現在可以在設有資料繫結的專案中進行快取了。(問題 #69243050)
    • 針對設有資料繫結的程式庫模組改善避免編譯功能。(問題 #77539932)
    • 如果您在先前版本中曾經因為某些無法預期的建構錯誤而停用隨選設定,現在您可以重新啟用這項功能。(問題 #77910727)

    3.1.0 (2018 年 3 月)

    這個版本的 Android 外掛程式須使用下列項目:

    • Gradle 4.4 以上版本。

      詳情請參閱「更新 Gradle」一節。

    • 建構工具 27.0.3 以上版本。

      請注意,您不再需要使用 android.buildToolsVersion 屬性指定建構工具的版本,外掛程式預設會使用最低需求版本。

    全新 DEX 編譯器 D8

    Android Studio 現在預設會使用名為 D8 的全新 DEX 編譯器。DEX 編譯是指將 .class 位元碼轉換為 .dex 位元碼,以供 Android 執行階段 (或舊版 Android 的 Dalvik) 使用的程序。與先前名為 DX 的編譯器相較,D8 的編譯速度更快,且輸出的 DEX 檔案更小,同時還能提供相同等級或更優異的應用程式執行階段效能。

    D8 應該不會改變您日常的應用程式開發工作流程。不過,如果發生任何和新編譯器有關的問題,請回報錯誤。如要暫時停用 D8 並使用 DX,可以在專案的 gradle.properties 檔案中加入以下內容:

          android.enableD8=false
        

    如果專案使用 Java 8 語言功能,系統預設會啟用漸進式脫糖功能。如要停用此功能,可以在專案的 gradle.properties 檔案內指定以下內容:

          android.enableIncrementalDesugaring=false.
        

    預先發布版使用者:請注意,如果您已在使用 D8 的預先發布版,D8 現在會使用 SDK 建構工具 (而非 JDK) 內的程式庫進行編譯。因此,假如您要存取的 API 位於 JDK 內,但不在 SDK 建構工具程式庫內,便會發生編譯錯誤。

    行為異動

    • 如要建構多個 APK,且每個 API 分別指定不同的 ABI,則在預設情況下,外掛程式不會再為下列 ABI 產生 APK:mipsmips64armeabi

      如要建構指定這些 ABI 的 APK,您必須使用 NDK r16b 以下版本,並在 build.gradle 檔案中指定 ABI,如下所示:

                splits {
                    abi {
                        include 'armeabi', 'mips', 'mips64'
                        ...
                    }
                }
              
                splits {
                    abi {
                        include("armeabi", "mips", "mips64")
                        ...
                    }
                }
              
    • 現在 Android 外掛程式的建構快取會收回超過 30 天前的快取項目了。

    • "auto" 傳送到 resConfig 不再自動選擇封裝 APK 所用的字串資源。如果繼續使用 "auto",外掛程式會封裝應用程式和依附元件所提供的所有字串資源。因此,您應該改為逐一指定要讓外掛程式封裝至 APK 的語言代碼。

    • 由於本機模組無法依附應用程式的測試 APK,因此透過 androidTestApi 設定 (而不是 androidTestImplementation) 為檢測設備測試新增依附元件,會導致 Gradle 發出以下警告:

              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              
              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              

    修正項目

    • 修正問題:Android Studio 無法正確識別複合式建構中的依附元件。
    • 修正問題:在單一建構作業中多次載入 Android 外掛程式會發生專案同步處理錯誤,例如在處理多個子專案的情況下,每個子專案的建構指令碼類別路徑內都包含該 Android 外掛程式,就會發生錯誤。

    3.0.0 版 (2017 年 10 月)

    Android Gradle 外掛程式 3.0.0 版內含多項變更,希望藉此解決大型專案的效能問題。

    舉例來說,在最多含有 130 個模組以及大量外部依附元件 (但是沒有程式碼或資源) 的範例架構專案中,您可以獲得經過改善的效能體驗,與以下項目能夠達成的效能相似:

    Android 外掛程式版本 + Gradle 版本 Android 外掛程式 2.2.0 + Gradle 2.14.1 Android 外掛程式 2.3.0 + Gradle 3.3 Android 外掛程式 3.0.0 + Gradle 4.1
    設定 (如執行 ./gradlew --help) 最多 2 分鐘 最多 9 秒 最多 2.5 秒
    單行 Java 變更 (實作變更) 最多 2 分鐘 15 秒 最多 29 秒 最多 6.4 秒

    部分變更內容會使現有版本無法運作。因此,您應該先考量遷移專案需要投注的心力,再使用新的外掛程式。

    如果您並未感受到上述的效能改善情形,請回報錯誤,並透過 Gradle 分析器附上您的建構作業追蹤記錄。

    這個版本的 Android 外掛程式須使用下列項目:

    • Gradle 4.1 以上版本。詳情請參閱「更新 Gradle」一節。
    • 建構工具 26.0.2 以上版本。本次更新後,您不再需要指定 SDK 建構工具的版本,外掛程式預設會使用最低需求版本。因此,您現在可以移除 android.buildToolsVersion 屬性了。

    3.0.1 版 (2017 年 11 月)

    這個次要更新版本支援 Android Studio 3.0.1 版,並提供多項一般錯誤修正和效能改善項目。

    最佳化

    • 透過更精細的工作圖,為含有多個模組的專案提供更優異的平行處理能力。
    • 變更依附元件時,Gradle 不會重新編譯無法存取該依附元件 API 的模組,藉此提升建構速度。您應該使用以下的 Gradle 新依附元件設定,對哪些依附元件會流失 API 到其他模組設限:implementationapicompileOnlyruntimeOnly
    • 按照類別進行 DEX 處理,能夠加快漸進式建構速度。現在每個類別都會編譯到各自的 DEX 檔案中,只有經過修改的類別才會重新進行 DEX 處理。minSdkVersion 設為 20 以下且使用舊版 multidex 的應用程式,建構速度也應有所提升。
    • 透過最佳化特定工作以便使用快取輸出內容,藉此提升建構速度。您必須先啟用 Gradle 建構快取,才能受惠於這項最佳化功能。
    • 改善 AAPT2 漸進式資源處理,現在系統預設啟用此功能。如果您在使用 AAPT2 時遇到問題,請回報錯誤。您也可以停用 AAPT2,方法是在 gradle.properties 檔案中設定 android.enableAapt2=false,然後透過指令列執行 ./gradlew --stop,重新啟動 Gradle Daemon。

    新功能

    • 可偵測變化版本的依附元件管理方式。現在建構特定模組的變化版本時,外掛程式會自動比對本機程式庫模組依附元件的變化版本與目前建構模組的變化版本。
    • 提供新的 Feature 模組外掛程式,以便支援 Android 免安裝應用程式和 Android 免安裝應用程式 SDK (您可以透過 SDK Manager 進行下載)。如要進一步瞭解如何使用新的外掛程式建立 Feature 模組,請參閱具有多功能的免安裝應用程式結構相關說明。
    • 為使用某些 Java 8 語言功能和 Java 8 程式庫提供內建支援功能。我們已淘汰且不再需要使用 Jack,請先停用 Jack,以便使用預設工具鏈內建的改良版 Java 8 支援功能。詳情請參閱使用 Java 8 語言功能相關說明。
    • 新增使用 Android Test Orchestrator 執行測試的支援功能,讓您能夠透過應用程式自身叫用的 Instrumentation,個別執行每項測試。由於每項測試都會在自己的 Instrumentation 執行個體中進行,因此在測試之間任何共用的狀態都不會累積在裝置的 CPU 或記憶體內。即使有一個測試停止運作,也只會終止自己的 Instrumentation 執行個體,其他測試依然可以正常執行。

      • 新增 testOptions.execution 以便決定是否要使用裝置端測試自動化調度管理。如果您想使用 Android Test Orchestrator,則必須指定 ANDROID_TEST_ORCHESTRATOR (如下所示)。根據預設,此屬性會設為 HOST,這樣會停用裝置端的自動化調度管理,也是執行測試的標準方法。

      Groovy

              android {
                testOptions {
                  execution 'ANDROID_TEST_ORCHESTRATOR'
                }
              }
              

      Kotlin

              android {
                testOptions {
                  execution = "ANDROID_TEST_ORCHESTRATOR"
                }
              }
              
    • 您可以利用新的 androidTestUtil 依附元件設定,在執行檢測設備測試之前安裝其他測試輔助工具 APK (例如 Android Test Orchestrator):

      Groovy

              dependencies {
                androidTestUtil 'com.android.support.test:orchestrator:1.0.0'
                ...
              }
              

      Kotlin

              dependencies {
                androidTestUtil("com.android.support.test:orchestrator:1.0.0")
                ...
              }
              
    • 新增 testOptions.unitTests.includeAndroidResources,用於支援需要使用 Android 資源 (例如 Robolectric) 的單元測試。將此屬性設為 true 後,外掛程式會在執行單元測試之前合併資源、資產及資訊清單。接著,測試就能檢查類別路徑內的 com/android/tools/test_config.properties,找出下列鍵:

      • android_merged_assets:合併的素材資源目錄絕對路徑。

        注意:程式庫模組的合併素材資源不含依附元件的素材資源 (請參閱問題 #65550419)。

      • android_merged_manifest:合併的資訊清單檔案絕對路徑。

      • android_merged_resources:合併的資源目錄絕對路徑,其中包含該模組及其所有依附元件的全部資源。

      • android_custom_package:最終 R 類別的套件名稱。如果您以動態方式修改應用程式 ID,則這個套件名稱可能會與應用程式資訊清單中的 package 屬性不相符。

    • 支援將字型當做資源,這是 Android 8.0 (API 級別 26) 中推出的新功能。
    • 支援 Android 免安裝應用程式 SDK 1.1 以上版本的語言特定 APK。
    • 您現在可以變更外部原生建構專案的輸出目錄,如下所示:

      Groovy

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory "./outputs/cmake"
                      }
                  }
              }
              

      Kotlin

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory = "./outputs/cmake"
                      }
                  }
              }
              
    • 現在透過 Android Studio 建構原生專案時可以使用 CMake 3.7 以上版本了。
    • 您可利用新的 lintChecks 依附元件設定,建構用於定義自訂 Lint 規則的 JAR,並將其封裝至 AAR 和 APK 專案。

      自訂程式碼檢查規則必須屬於另一個專案,該專案可輸出單一 JAR 且僅包含 compileOnly 依附元件。這樣一來,其他應用程式和程式庫模組就能透過 lintChecks 設定依附該 Lint 專案:

      Groovy

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks project(':lint-checks')
              }
              

      Kotlin

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks(project(":lint-checks"))
              }
              

    行為變更

    • Android 外掛程式 3.0.0 版會移除某些 API,因此使用這些 API 的建構作業將會失敗。舉例來說,您無法再使用 Variants API 存取 outputFile() 物件,也無法使用 processManifest.manifestOutputFile() 取得各個變化版本的資訊清單檔案。詳情請參閱 API 變更
    • 您不再需要指定建構工具的版本,因此現在可以移除 android.buildToolsVersion 屬性了。根據預設,外掛程式會自動根據您使用的 Android 外掛程式版本,採用建構工具的最低需求版本。
    • 您現在可以透過 buildTypes 區塊啟用/停用 PNG 壓縮功能,如下所示。所有版本皆預設啟用 PNG 壓縮功能,但偵錯版本除外,這是因為如果專案內含大量 PNG 檔案,便會增加建構時間。因此,為了縮短其他建構類型的建構時間,您應停用 PNG 壓縮功能,或者將圖片轉換為 WebP

      Groovy

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  crunchPngs false
                }
              }
            }
            

      Kotlin

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  isCrunchPngs = false
                }
              }
            }
            
    • Android 外掛程式現在會自動建構設定在外部 CMake 專案中的執行檔目標。
    • 您現在必須使用 annotationProcessor 依附元件設定,在註解處理工具的類別路徑中新增註解處理工具
    • 使用已淘汰的 ndkCompile 現在會受到進一步限制。建議您改用 CMake 或 ndk-build 編譯要封裝至 APK 的原生程式碼。詳情請參閱從 ndkcompile 遷移相關說明。

    3.0.0 版 (2017 年 10 月)

    Android Gradle 外掛程式 3.0.0 版內含多項變更,希望藉此解決大型專案的效能問題。

    舉例來說,在最多含有 130 個模組以及大量外部依附元件 (但是沒有程式碼或資源) 的範例架構專案中,您可以獲得經過改善的效能體驗,與以下項目能夠達成的效能相似:

    Android 外掛程式版本 + Gradle 版本 Android 外掛程式 2.2.0 + Gradle 2.14.1 Android 外掛程式 2.3.0 + Gradle 3.3 Android 外掛程式 3.0.0 + Gradle 4.1
    設定 (如執行 ./gradlew --help) 最多 2 分鐘 最多 9 秒 最多 2.5 秒
    單行 Java 變更 (實作變更) 最多 2 分鐘 15 秒 最多 29 秒 最多 6.4 秒

    部分變更內容會使現有版本無法運作。因此,您應該先考量遷移專案需要投注的心力,再使用新的外掛程式。

    如果您並未感受到上述的效能改善情形,請回報錯誤,並透過 Gradle 分析器附上您的建構作業追蹤記錄。

    這個版本的 Android 外掛程式須使用下列項目:

    • Gradle 4.1 以上版本。詳情請參閱「更新 Gradle」一節。
    • 建構工具 26.0.2 以上版本。本次更新後,您不再需要指定 SDK 建構工具的版本,外掛程式預設會使用最低需求版本。因此,您現在可以移除 android.buildToolsVersion 屬性了。

    3.0.1 版 (2017 年 11 月)

    這個次要更新版本支援 Android Studio 3.0.1 版,並提供多項一般錯誤修正和效能改善項目。

    最佳化

    • 透過更精細的工作圖,為含有多個模組的專案提供更優異的平行處理能力。
    • 變更依附元件時,Gradle 不會重新編譯無法存取該依附元件 API 的模組,藉此提升建構速度。您應該使用以下的 Gradle 新依附元件設定,對哪些依附元件會流失 API 到其他模組設限:implementationapicompileOnlyruntimeOnly
    • 按照類別進行 DEX 處理,能夠加快漸進式建構速度。現在每個類別都會編譯到各自的 DEX 檔案中,只有經過修改的類別才會重新進行 DEX 處理。minSdkVersion 設為 20 以下且使用舊版 multidex 的應用程式,建構速度也應有所提升。
    • 透過最佳化特定工作以便使用快取輸出內容,藉此提升建構速度。您必須先啟用 Gradle 建構快取,才能受惠於這項最佳化功能。
    • 改善 AAPT2 漸進式資源處理,現在系統預設啟用此功能。如果您在使用 AAPT2 時遇到問題,請回報錯誤。您也可以停用 AAPT2,方法是在 gradle.properties 檔案中設定 android.enableAapt2=false,然後透過指令列執行 ./gradlew --stop,重新啟動 Gradle Daemon。

    新功能

    • 可偵測變化版本的依附元件管理方式。現在建構特定模組的變化版本時,外掛程式會自動比對本機程式庫模組依附元件的變化版本與目前建構模組的變化版本。
    • 提供新的 Feature 模組外掛程式,以便支援 Android 免安裝應用程式和 Android 免安裝應用程式 SDK (您可以透過 SDK Manager 進行下載)。如要進一步瞭解如何使用新的外掛程式建立 Feature 模組,請參閱具有多功能的免安裝應用程式結構相關說明。
    • 為使用某些 Java 8 語言功能和 Java 8 程式庫提供內建支援功能。我們已淘汰且不再需要使用 Jack,請先停用 Jack,以便使用預設工具鏈內建的改良版 Java 8 支援功能。詳情請參閱使用 Java 8 語言功能相關說明。
    • 新增使用 Android Test Orchestrator 執行測試的支援功能,讓您能夠透過應用程式自身叫用的 Instrumentation,個別執行每項測試。由於每項測試都會在自己的 Instrumentation 執行個體中進行,因此在測試之間任何共用的狀態都不會累積在裝置的 CPU 或記憶體內。即使有一個測試停止運作,也只會終止自己的 Instrumentation 執行個體,其他測試依然可以正常執行。

      • 新增 testOptions.execution 以便決定是否要使用裝置端測試自動化調度管理。如果您想使用 Android Test Orchestrator,則必須指定 ANDROID_TEST_ORCHESTRATOR (如下所示)。根據預設,此屬性會設為 HOST,這樣會停用裝置端的自動化調度管理,也是執行測試的標準方法。

      Groovy

              android {
                testOptions {
                  execution 'ANDROID_TEST_ORCHESTRATOR'
                }
              }
              

      Kotlin

              android {
                testOptions {
                  execution = "ANDROID_TEST_ORCHESTRATOR"
                }
              }
              
    • 您可以利用新的 androidTestUtil 依附元件設定,在執行檢測設備測試之前安裝其他測試輔助工具 APK (例如 Android Test Orchestrator):

      Groovy

              dependencies {
                androidTestUtil 'com.android.support.test:orchestrator:1.0.0'
                ...
              }
              

      Kotlin

              dependencies {
                androidTestUtil("com.android.support.test:orchestrator:1.0.0")
                ...
              }
              
    • 新增 testOptions.unitTests.includeAndroidResources,用於支援需要使用 Android 資源 (例如 Robolectric) 的單元測試。將此屬性設為 true 後,外掛程式會在執行單元測試之前合併資源、資產及資訊清單。接著,測試就能檢查類別路徑內的 com/android/tools/test_config.properties,找出下列鍵:

      • android_merged_assets:合併的素材資源目錄絕對路徑。

        注意:程式庫模組的合併素材資源不含依附元件的素材資源 (請參閱問題 #65550419)。

      • android_merged_manifest:合併的資訊清單檔案絕對路徑。

      • android_merged_resources:合併的資源目錄絕對路徑,其中包含該模組及其所有依附元件的全部資源。

      • android_custom_package:最終 R 類別的套件名稱。如果您以動態方式修改應用程式 ID,則這個套件名稱可能會與應用程式資訊清單中的 package 屬性不相符。

    • 支援將字型當做資源,這是 Android 8.0 (API 級別 26) 中推出的新功能。
    • 支援 Android 免安裝應用程式 SDK 1.1 以上版本的語言特定 APK。
    • 您現在可以變更外部原生建構專案的輸出目錄,如下所示:

      Groovy

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory "./outputs/cmake"
                      }
                  }
              }
              

      Kotlin

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory = "./outputs/cmake"
                      }
                  }
              }
              
    • 現在透過 Android Studio 建構原生專案時可以使用 CMake 3.7 以上版本了。
    • 您可利用新的 lintChecks 依附元件設定,建構用於定義自訂 Lint 規則的 JAR,並將其封裝至 AAR 和 APK 專案。

      自訂程式碼檢查規則必須屬於另一個專案,該專案可輸出單一 JAR 且僅包含 compileOnly 依附元件。這樣一來,其他應用程式和程式庫模組就能透過 lintChecks 設定依附該 Lint 專案:

      Groovy

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks project(':lint-checks')
              }
              

      Kotlin

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks(project(":lint-checks"))
              }
              

    行為變更

    • Android 外掛程式 3.0.0 版會移除某些 API,因此使用這些 API 的建構作業將會失敗。舉例來說,您無法再使用 Variants API 存取 outputFile() 物件,也無法使用 processManifest.manifestOutputFile() 取得各個變化版本的資訊清單檔案。詳情請參閱 API 變更
    • 您不再需要指定建構工具的版本,因此現在可以移除 android.buildToolsVersion 屬性了。根據預設,外掛程式會自動根據您使用的 Android 外掛程式版本,採用建構工具的最低需求版本。
    • 您現在可以透過 buildTypes 區塊啟用/停用 PNG 壓縮功能,如下所示。所有版本皆預設啟用 PNG 壓縮功能,但偵錯版本除外,這是因為如果專案內含大量 PNG 檔案,便會增加建構時間。因此,為了縮短其他建構類型的建構時間,您應停用 PNG 壓縮功能,或者將圖片轉換為 WebP

      Groovy

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  crunchPngs false
                }
              }
            }
            

      Kotlin

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  isCrunchPngs = false
                }
              }
            }
            
    • Android 外掛程式現在會自動建構設定在外部 CMake 專案中的執行檔目標。
    • 您現在必須使用 annotationProcessor 依附元件設定,在註解處理工具的類別路徑中新增註解處理工具
    • 使用已淘汰的 ndkCompile 現在會受到進一步限制。建議您改用 CMake 或 ndk-build 編譯要封裝至 APK 的原生程式碼。詳情請參閱從 ndkcompile 遷移相關說明。

    2.3.0 版 (2017 年 2 月)

    2.3.3 版 (2017 年 6 月)

    這個次要更新版本新增了 Android Studio 2.3.3 版的相容性。

    2.3.2 版 (2017 年 5 月)

    這個次要更新版本新增了 Android Studio 2.3.2 版的相容性。

    2.3.1 版 (2017 年 4 月)

    這是 Android 外掛程式 2.3.0 版的次要更新版本,當中修正了某些實體 Android 裝置無法妥善支援立即執行功能的錯誤 (詳情請參閱問題 #235879)。

    依附元件:
    新功能:
    • 使用 Gradle 3.3 版,當中包含多項效能改善項目和新功能。詳情請參閱 Gradle 版本資訊
    • 建構快取:儲存 Android 外掛程式建構專案時產生的特定輸出內容 (例如未封裝的 AAR 以及經過 DEX 前置處理的遠端依附元件)。使用快取可加快清理建構作業的速度,因為建構系統可在後續建構期間重複使用快取檔案,而不必重新建立這類檔案。在預設情況下,使用 Android 外掛程式 2.3.0 以上版本的專案都會啟用建構快取。詳情請參閱使用建構快取改善建構速度
    變更內容:

    2.2.0 版 (2016 年 9 月)

    依附元件:
    新功能:
    • 使用 Gradle 2.14.1 版,當中包含多項效能改善項目和新功能,並修正在本機使用 Gradle Daemon 時允許權限提升的安全漏洞。詳情請參閱 Gradle 版本資訊
    • Gradle 現在會使用 externalNativeBuild {} DSL,讓您連結至原生來源並透過 CMake 或 ndk-build 編譯原生資料庫。建構原生資料庫後,Gradle 會將其封裝至 APK。如要進一步瞭解如何搭配 Gradle 使用 CMake 和 ndk-build,請參閱在專案中新增 C 和 C++ 程式碼相關說明。
    • 現在 Gradle 會在您透過指令列執行建構作業時,嘗試自動下載任何缺少的 SDK 元件或專案依附的更新項目。詳情請參閱「透過 Gradle 自動下載缺少的套件」一節。
    • Gradle 提供新的實驗性快取功能,透過 DEX 前置處理、儲存以及重新利用經過 DEX 前置處理的程式庫版本,加快建構時間。如要進一步瞭解如何使用這項實驗功能,請參閱建構快取指南。
    • 採用新的預設封裝管道,用單一工作即可控制壓縮、簽署及 zipalign 處理,藉此改善建構效能。如要改回使用舊版封裝工具,只要在 gradle.properties 檔案中加入 android.useOldPackaging=true 即可。使用新的封裝工具時,無法執行 zipalignDebug 工作。不過,您可以呼叫 createZipAlignTask(String taskName, File inputFile, File outputFile) 方法,自行建立這項工作。
    • 除了傳統 JAR 簽署外,APK 簽署現在也會使用 APK Signature Scheme v2。所有 Android 平台都會接受最終產生的 APK。如果在簽署後修改這些 APK 的任何內容,便會使其 v2 簽署失效,也無法安裝在裝置上。如要停用這項功能,請在模組層級的 build.gradle 檔案中加入以下內容:

      Groovy

      android {
        ...
        signingConfigs {
          config {
            ...
            v2SigningEnabled false
          }
        }
      }
            

      Kotlin

      android {
        ...
        signingConfigs {
          create("config") {
            ...
            v2SigningEnabled = false
          }
        }
      }
            
    • 您現在可以針對 multidex 建構作業使用 ProGuard 規則,決定 Gradle 要將哪些類別編譯至應用程式的「主要」DEX 檔案。由於 Android 系統會在啟動應用程式時先載入主要 DEX 檔案,因此您可以將特定類別編譯至主要 DEX 檔案,藉此在啟動應用程式時優先執行這些類別。建立主要 DEX 檔案專用的 ProGuard 設定檔之後,請透過 buildTypes.multiDexKeepProguard 將設定檔的路徑傳送給 Gradle。這個 DSL 和 buildTypes.proguardFiles 的使用方式不同,後者可為應用程式提供一般的 ProGuard 規則,且不會為主要 DEX 檔案指定類別。
    • 新增對 android:extractNativeLibs 旗標的支援功能,可縮減應用程式在裝置上的安裝大小。只要在應用程式資訊清單的 <application> 元素中將此標記設為 false,Gradle 就會將未壓縮及相對應的原生資料庫版本封裝至 APK。這種做法不僅可防止 PackageManager 在安裝期間將原生資料庫從 APK 複製到裝置的檔案系統,還有縮減應用程式差異更新檔案大小的額外優勢。
    • 您現在可以為變種版本指定 versionNameSuffixapplicationIdSuffix。(問題 59614)
    變更內容:
    • getDefaultProguardFile 現在會傳回 Gradle 適用的 Android 外掛程式提供的預設 ProGuard 檔案,不再使用 Android SDK 中的檔案。
    • 改善 Jack 編譯器的效能和功能。
      • testCoverageEnabled 設為 true 的情況下,Jack 現在支援 Jacoco 的測試涵蓋率。
      • 改善對註解處理工具的支援功能。類別路徑內的註解處理工具 (例如任何 compile 依附元件) 會自動套用到建構作業。您也可以在建構作業中指定註解處理工具,然後使用模組層級 build.gradle 檔案內的 javaCompileOptions.annotationProcessorOptions {} DSL 傳遞引數:

        Groovy

        android {
          ...
          defaultConfig {
            ...
            javaCompileOptions {
              annotationProcessorOptions {
                className 'com.example.MyProcessor'
                // Arguments are optional.
                arguments = [ foo : 'bar' ]
              }
            }
          }
        }
            

        Kotlin

        android {
          ...
          defaultConfig {
            ...
            javaCompileOptions {
              annotationProcessorOptions {
                className = "com.example.MyProcessor"
                // Arguments are optional.
                arguments(mapOf(foo to "bar"))
              }
            }
          }
        }
            

        如果想在編譯時間內套用註解處理工具,但不想將其納入 APK,請使用 annotationProcessor 依附元件範圍:

        Groovy

        dependencies {
            compile 'com.google.dagger:dagger:2.0'
            annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
           // or use buildVariantAnnotationProcessor to target a specific build variant
        }
            

        Kotlin

        dependencies {
            implementation("com.google.dagger:dagger:2.0")
            annotationProcessor("com.google.dagger:dagger-compiler:2.0")
           // or use buildVariantAnnotationProcessor to target a specific build variant
        }
            
      • 如需可供設定的參數列表,請從指令列執行以下內容:

        java -jar /build-tools/jack.jar --help-properties
        
      • 根據預設,如果 Gradle Daemon 的堆積大小至少有 1.5 GB,Jack 現在便會以和 Gradle 相同的程序執行。若要調整 Daemon 堆積大小,請在 gradle.properties 檔案中新增以下內容:
        # This sets the daemon heap size to 1.5GB.
        org.gradle.jvmargs=-Xmx1536M
        

    2.1.0 (2016 年 4 月)

    2.1.3 版 (2016 年 8 月)

    這個更新版本需要使用 Gradle 2.14.1 以上版本。Gradle 2.14.1 內含效能改善項目、新功能,和一項重要的安全性修正。詳情請參閱 Gradle 版本資訊

    依附元件:
    新功能:
    • 開始支援 N 開發人員預覽版、JDK 8,以及使用 Jack 工具鏈的 Java 8 語言功能。詳情請參閱 N 預覽版指南

      注意:立即執行現在無法和 Jack 一起使用,使用新工具鏈時,系統會停用此功能。只有在針對 N 預覽版進行開發,而且想要使用受支援的 Java 8 語言功能時,才需要使用 Jack。

    • 針對漸進式 Java 編譯新增預設支援功能,以便減少開發所需的編譯時間。此功能只會重新編譯來源有所變更或需要重新編譯的部分。若要停用此功能,請將以下程式碼加入模組層級 build.gradle 檔案:

      Groovy

      android {
        ...
        compileOptions {
          incremental false
        }
      }
      

      Kotlin

      android {
        ...
        compileOptions {
          incremental = false
        }
      }
      
    • 對「處理中的 dex 程序」新增支援功能,這項功能會在建構程序中執行 DEX 處理,而不會透過獨立的外部 VM 程序執行。不但可以加快漸進式建構的速度,也能加快完整建構的速度。在預設情況下,只要將專案的 Gradle Daemon 堆積大小上限設為 2048 MB 以上,即可啟用這項功能。您可以在專案的 gradle.properties 檔案中加入以下內容,即可達到此效果:

      ```none org.gradle.jvmargs = -Xmx2048m ```

      如果您已在模組層級的 build.gradle 檔案中定義 javaMaxHeapSize 的值,就必須將 org.gradle.jvmargs 設為 javaMaxHeapSize 的值 + 1024 MB。舉例來說,如果您將 javaMaxHeapSize 設為「2048m」,則需將以下內容加入專案的 gradle.properties 檔案:

      ```none org.gradle.jvmargs = -Xmx3072m ```

      若要停用「處理中的 dex 程序」,請將以下程式碼加入模組層級 build.gradle 檔案:

      Groovy

      android {
        ...
        dexOptions {
            dexInProcess false
        }
      }
      

      Kotlin

      android {
        ...
        dexOptions {
            dexInProcess = false
        }
      }
      

    2.0.0 (2016 年 4 月)

    依附元件:
    新功能:
    • 透過支援位元碼插入,以及將更新的程式碼和資源推送到在模擬器或實體裝置上正在執行的應用程式,啟用立即執行功能。
    • 新增對漸進式建構作業的支援功能,無論應用程式是否正在執行都能順利運作。將漸進式變更內容透過 Android Debug Bridge 推送到已連結的裝置上,藉此縮短整體建構時間。
    • 新增 maxProcessCount,以便控管同時可以產生的工作站 DEX 程序數量。下列程式碼位於模組層級 build.gradle 檔案內,將並行程序上限設定為 4:

      Groovy

      android {
        ...
        dexOptions {
          maxProcessCount = 4 // this is the default value
        }
      }
      

      Kotlin

      android {
        ...
        dexOptions {
          maxProcessCount = 4 // this is the default value
        }
      }
      
        </li>
      
        <li>Added an experimental code shrinker to support pre-dexing and reduce re-dexing
        of dependencies, which are not supported with Proguard. This improves the build
        speed of your debug build variant. Because the experimental shrinker does not
        support optimization and obfuscation, you should enable Proguard for your
        release builds. To enable the experimental shrinker for your debug builds, add
        the following to your module-level <code>build.gradle</code> file:
      

      Groovy

      android {
        ...
        buildTypes {
          debug {
            minifyEnabled true
            useProguard false
          }
          release {
            minifyEnabled true
            useProguard true // this is a default setting
          }
        }
      }
      

      Kotlin

      android {
        ...
        buildTypes {
          getByName("debug") {
            minifyEnabled = true
            useProguard = false
          }
          getByName("release") {
            minifyEnabled = true
            useProguard = true // this is a default setting
          }
        }
      }
      
        </li>
      
        <li>Added logging support and improved performance for the resource shrinker.
        The resource shrinker now logs all of its operations into a <code>resources.txt</code>
        file located in the same folder as the Proguard log files.
        </li>
      </ul>
      

    變更行為:
    • minSdkVersion 設為 18 以上時,APK 簽署會使用 SHA256。
    •   <li>DSA and ECDSA keys can now sign APK packages.
      
          <p class="note">
            <strong>Note:</strong> The <a href=
            "/training/articles/keystore.html">Android keystore</a> provider no
            longer supports <a href=
            "/about/versions/marshmallow/android-6.0-changes.html#behavior-keystore">
            DSA keys on Android 6.0</a> (API level 23) and higher.
          </p>
      
        </li>
      </ul>
      

    修正問題:
    • 修正導致同時在測試和主要建構設定中複製 AAR 依附元件的問題。

    Gradle 適用的 Android 外掛程式,修訂版本 1.5.0 (2015 年 11 月)

    依附元件:
    • Gradle 2.2.1 以上版本。
    • 建構工具 21.1.1 以上版本。
    一般注意事項:
    • 將資料繫結外掛程式整合到 Gradle 適用的 Android 外掛程式中。如要啟用這項功能,請在每個使用該外掛程式的專案 build.gradle 檔案中加入下列程式碼:
    • android {
          dataBinding {
              enabled = true
          }
      }
              
      android {
          dataBinding {
              enabled = true
          }
      }
              
    • 新增 Transform API,以便在經過編譯的 .class 檔案轉換為 .dex 檔案之前,讓第三方外掛程式先行處理。Transform API 可簡化插入自訂類別的操控方式,並讓您更能自由決定要操控的項目。若想將轉換插入版本,請建立新的類別,並實作任一種 Transform 介面,再用 android.registerTransform(theTransform)android.registerTransform(theTransform, dependencies) 註冊。您不用把工作全部融合在一起。請注意以下 Transform API 相關事項:
      • 轉換可套用到以下一或多種內容:目前的專案、子專案,以及外部程式庫。
      • 轉換必須進行全域註冊,才能套用到所有變化版本。
      • 透過 Java 程式碼涵蓋率程式庫 (JaCoCo)、ProGuard 及 MultiDex 進行的內部程式碼處理現在使用 Transform API。不過,Java Android 編譯器套件 (Jack) 不使用這個 API:只有 javac/dx 程式碼路徑才會使用。
      • Gradle 會以下列順序執行轉換作業:JaCoCo、第三方外掛程式、ProGuard。第三方外掛程式的執行順序與第三方外掛程式新增轉換的順序相同;第三方外掛程式開發人員無法透過 API 控制轉換的執行順序。
    • 淘汰 ApplicationVariant 類別的 dex getter。您再也無法透過 Variant API 存取 Dex 工作了,因為現在已改為透過轉換完成此工作。目前沒有控管 DEX 程序的替代選項。
    • 修正資產的漸進式支援功能。
    • 開放讓測試專案使用 MultiDex,可改善對 MultiDex 的支援功能,而且測試現在也會自動提供 com.android.support:multidex-instrumentation 依附元件。
    • 新增以下功能:當 Gradle 建構作業叫用非同步工作,且 worker 程序執行失敗時,能夠妥善處理 Gradle 建構作業失敗的狀況,並回報潛在錯誤原因。
    • 新增支援在含有多個應用程式二進位檔介面 (ABI) 的變化版本中設定特定 ABI 的功能。
    • 新增支援功能:安裝或執行測試時,可使用以逗號分隔的 ANDROID_SERIAL 環境變數裝置序號清單。
    • 修正在 Android 5.0 (API 級別 20) 以上版本的裝置上,如果 APK 名稱中含有空格,便會安裝失敗的問題。
    • 修正 Android 資產封裝工具 (AAPT) 錯誤輸出內容的各種相關問題。
    • 新增 JaCoCo 漸進式檢測支援功能,可加快漸進式建構速度。Gradle 適用的 Android 外掛程式現在會直接叫回 JaCoCo 的插裝了。如要強制執行較新的 JaCoCo 插裝,您必須將其新增為建構指令碼依附元件。
    • 修正 JaCoCo 支援功能,以便忽略不屬於類別的檔案。
    • 為達成回溯相容性,新增對向量可繪項目的支援,以便在建構時產生 PNG。針對未指定 API 版本的資源目錄,或者在應用程式資訊清單的 <uses-sdk> 元素中將 android:minSdkVersion 屬性指定為 20 以下的資源目錄,Gradle 適用的 Android 外掛程式會為該目錄中的所有向量可繪項目產生 PNG。您可以在 defaultConfigbuild.gradle 檔案內的 productFlavor區段中使用 generatedDensities 屬性,即可設定 PNG 密度。
    • 新增可模擬的 android.jar 共享功能,外掛程式只會產生一次,並會給單元測試使用。多個模組 (例如 applib) 現在可以共用了。刪除 $rootDir/build 即可重新產生。
    • 變更 Java 資源處理程序,讓系統在模糊化工作之前 (而不是在 APK 封裝時) 處理。本次變更讓模糊化工作可在套件模糊化後調整 Java 資源。
    • 修正實驗性程式庫外掛程式中使用 Java Native Interface (JNI) 程式碼的問題。
    • 新增在實驗性程式庫外掛程式的 android:compileSdkVersion 屬性以外設定平台版本的功能。

    Gradle 適用的 Android 外掛程式,修訂版本 1.3.1 (2015 年 8 月)

    「Dependencies」
    • Gradle 2.2.1 以上版本。
    • 建構工具 21.1.1 以上版本。
    一般注意事項:
    • 修正 ZipAlign 工作,使其在使用自訂檔案名稱時可以正常取用上一個工作的輸出內容。
    • 修復 Renderscript 透過 NDK 使用的封裝功能。
    • 持續為 createDebugCoverageReport 建構工作提供支援。
    • 修正 build.gradle 建構檔案中 archiveBaseName 屬性的自訂用法支援功能。
    • 修正在 Android Studio 以外執行 Lint 時,進行參數方法註解查詢會導致發生 Invalid ResourceType Lint 警告的問題。

    Gradle 適用的 Android 外掛程式,修訂版本 1.3.0 (2015 年 7 月)

    「Dependencies」
    • Gradle 2.2.1 以上版本。
    • 建構工具 21.1.1 以上版本。
    一般注意事項:
    • 新增對 com.android.build.threadPoolSize 屬性的支援功能,以便控制 gradle.properties 檔案或指令列的 Android 工作執行緒集區大小。以下範例將這項屬性設為 4。

              
              -Pcom.android.build.threadPoolSize=4
              
            
    • 設定預設建構行為,藉此從 APK 中排除 LICENSELICENSE.txt 檔案。如要將這些檔案納入 APK,請從 build.gradle 檔案的 packagingOptions.excludes 屬性中移除這些檔案。例如:
      android {
            packagingOptions.excludes = []
          }
            
      android {
            packagingOptions.excludes.clear()
          }
          
    • 新增 sourceSets 工作,以便檢查所有可用的來源集。
    • 加強單元測試支援,識別多個變種版本和建構變化版本的來源資料夾。舉例來說,如果想測試有多個變種版本 flavor1flavorA,建構類型為 Debug 的應用程式,測試來源集為:
      • test
      • testFlavor1
      • testFlavorA
      • testFlavor1FlavorA
      • testFlavor1FlavorADebug

      Android 測試已辨識到多個變種版本的來源資料夾。

    • 改善單元測試支援,以便執行以下作業:
      • 對主要和測試來源執行 javac,即使建構檔案中的 useJack 屬性設為 true 也一樣。
      • 正確識別每種建構類型的依附元件。
    • 新增透過指令列指定檢測設備測試執行工具引數的支援功能。例如:
      ./gradlew connectedCheck \
         -Pandroid.testInstrumentationRunnerArguments.size=medium \
         -Pandroid.testInstrumentationRunnerArguments.class=TestA,TestB
              
    • 新增對 build.gradle 檔案內任意 Android 資產封裝工具 (AAPT) 參數的支援功能。例如:

      android {
          aaptOptions {
            additionalParameters "--custom_option", "value"
          }
      }
            
      android {
          aaptOptions {
            additionalParameters += listOf("--custom_option", "value")
          }
      }
            
    • 新增支援測試 APK 模組做為獨立的測試模組,同時使用 targetProjectPathtargetVariant 屬性設定 APK 路徑和目標變化版本。

      注意:測試 APK 模組不支援變種版本,且只能指定單一變化版本為目標。此外,系統也尚未支援 Jacoco。

    • 新增在合併資源之前進行資源名稱驗證的功能。
    • 為程式庫模組建構 AAR (Android ARchive) 套件時,請勿在資訊清單合併工具設定中提供 @{applicationId} 自動預留位置。如要在封存程式庫中加入應用程式 ID,請改用 @{libApplicationId} 等其他預留位置,並提供相關的值。

    Gradle 適用的 Android 外掛程式,修訂版本 1.2.0 (2015 年 4 月)

    依附元件:
    • Gradle 2.2.1 以上版本。
    • 建構工具 21.1.1 以上版本。
    一般注意事項:
    • 加強以 Gradle 執行單元測試的支援功能。
      • 新增直接透過 Gradle 執行單元測試時,在類別路徑中加入 Java 樣式資源的支援功能。
      • 新增對 Android ARchive (AAR) 構件單元測試依附元件的支援功能。
      • 新增對 unitTestVariants 屬性的支援,以便使用 build.gradle 檔案處理單元測試變數。
      • testOptions 底下新增 unitTest.all 程式碼區塊,以便設定單元測試的自訂工作。以下範例程式碼會展示如何使用這個新選項新增單元測試設定:
        android {
          testOptions {
            unitTest.all {
              jvmArgs '-XX:MaxPermSize=256m' // Or any other gradle option.
            }
          }
        }
        
        android {
          testOptions {
            unitTest.all {
              jvmArgs += listOf("-XX:MaxPermSize=256m") // Or any other gradle option.
            }
          }
        }
                    
      • 修正 mockable-android.jar 檔案封裝作業內列舉和公開執行個體欄位的處理方式。
      • 修正程式庫專案工作依附元件,以便測試類別在變更後重新編譯。
    • 新增 testProguardFile 屬性,以便在壓縮測試 APK 時套用 ProGuard 檔案。
    • adbOptions 程式碼區塊新增 timeOut 屬性,以便管理 Android Debug Bridge 螢幕錄影的錄影時間上限。
    • 新增 280 dpi 資源支援功能。
    • 改善專案評估期間效能。

    Gradle 適用的 Android 外掛程式,修訂版本 1.1.3 (2015 年 3 月)

    依附元件:
    • Gradle 2.2.1 以上版本。
    • 建構工具 21.1.1 以上版本。
    一般注意事項:
    • 修正觸發 ProGuard 錯誤的測試應用程式的重複依附元件。
    • 修正 Comparator 實作因未遵守 JDK Comparator 合約而產生 JDK 7 錯誤的問題。

    Gradle 適用的 Android 外掛程式,修訂版本 1.1.2 (2015 年 2 月)

    依附元件:
    • Gradle 2.2.1 以上版本。
    • 建構工具 21.1.1 以上版本。
    一般注意事項:
    • 在建立用於單元測試的可模擬 JAR 時,將路徑正規化。
    • 修正 build.gradle 檔案內的 archivesBaseName 設定。
    • 修正建構程式庫測試應用程式時,資訊清單合併工具中預留位置無法解析的問題。

    Gradle 適用的 Android 外掛程式,修訂版本 1.1.1 (2015 年 2 月)

    依附元件:
    • Gradle 2.2.1 以上版本。
    • 建構工具 21.1.1 以上版本。
    一般注意事項:
    • 修改建構變化版本,現在只有封裝 Wear 應用程式的變化版本,才能觸發 Wear 專屬建構工作。
    • 變更依附元件相關問題,使其在建構時間發生錯誤,而不是偵錯時間。這個行為可以讓您執行診斷工作 (例如「依附元件」),以便幫助您解決衝突。
    • 修正 android.getBootClasspath() 回傳內容值的方法。

    Gradle 適用的 Android 外掛程式,修訂版本 1.1.0 (2015 年 2 月)

    依附元件:
    • Gradle 2.2.1 以上版本。
    • 建構工具 21.1.1 以上版本。
    一般注意事項:
    • 新增單元測試支援
      • 單元測試能夠在本機 JVM 上與 android.jar 檔案的特別版本搭配執行,該檔案與主流模擬架構 (例如 Mockito) 相容。
      • 新增使用變種版本時的測試工作 testDebugtestReleasetestMyFlavorDebug
      • 新增視為單元測試的來源資料夾:src/test/java/src/testDebug/java/src/testMyFlavor/java/
      • build.gradle 檔案新增設定,以便宣告僅供測試使用的依附元件,例如 testCompile 'junit:junit:4.11'testMyFlavorCompile 'some:library:1.0'

        注意:僅供測試使用的依附元件目前無法和 Jack (Java Android 編譯器套件) 相容。

      • 新增 android.testOptions.unitTests.returnDefaultValues 選項,以便控管可模擬 android.jar 行為。
    • 測試工作名稱內的 Test 已替換為 AndroidTest。例:assembleDebugTest 現在稱作 assembleDebugAndroidTest 工作。單元測試工作名稱內仍有 UnitTest,例:assembleDebugUnitTest
    • 修改 ProGuard 設定檔,使其不再套用到測試 APK。如果您有啟用壓縮,ProGuard 會處理測試 APK,並只會套用到壓縮主要 APK 時產生的對應檔案。
    • 更新依附元件管理方式
      • 修正使用 providedpackage 範圍的問題。

        注意:這些範圍和 AAR (Android ARchive) 套件不相容,會倒摯友 AAR 套件的版本出現錯誤。

      • 修改依附元件解析方式,使其比較測試中的應用程式與測試應用程式。如果兩個應用程式都偵測到同樣版本的成果,就不會和測試應用程式一起納入,只會跟測試中的應用程式一起封裝。如果兩個應用程式偵測到不同版本的成果,則建構失敗。
    • 新增對資源合併工具的 anyDpi 資源限定詞支援功能。
    • 改善設有大量 Android 模組的專案評估與 IDE 同步速度。

    Gradle 適用的 Android 外掛程式,修訂版本 1.0.1 (2015 年 1 月)

    依附元件:
    • Gradle 2.2.1 最高至 2.3.x。

      注意:這個版本的 Gradle 適用的 Android 外掛程式和 Gradle 2.4 以上版本不相容。

    • 建構工具 21.1.1 以上版本。
    一般注意事項:
    • 修正 Gradle 在存取 extractReleaseAnnotations 模組時會建構失敗的問題。(問題 81638)
    • 修正 Disable 傳送 --no-optimize 設定到 Dalvik 執行檔 (dex) 位元碼會發生的問題。(問題 82662)
    • 修正資訊清單合併工具在匯入 targetSdkVersion 小於 16 的程式庫時會發生的問題。
    • 修正搭配 JDK 8 使用 Android Studio 會發生的密度排序問題。

    Gradle 適用的 Android 外掛程式,修訂版本 1.0.0 (2014 年 12 月)

    依附元件:
    • Gradle 2.2.1 最高至 2.3.x。

      注意:這個版本的 Gradle 適用的 Android 外掛程式和 Gradle 2.4 以上版本不相容。

    • 建構工具 21.1.1 以上版本。
    一般注意事項:
    • 外掛程式初次發布版本。