Android Studio 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 版本資訊」。