Android Studio 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 元件快速加入所需依附元件,而不會一併加入不需要的項目。