Android Studio 3.1 版 (2018 年 3 月)
Android Studio 3.1.0 版是主要版本,其中包含多項新功能和改善項目。
3.1.4 版 (2018 年 8 月)
這個 Android Studio 3.1 版的更新版本包含下列變更和修正項目:
- 現在隨附的 Kotlin 版本為 1.2.50 版。
- 系統會使用
kotlin-stdlib-jdk* artifacts
建立新專案,而不是已淘汰的kotlin-stdlib-jre*
構件。 - ProGuard 規則的 R8 剖析功能已經改良。
- 這個版本修正了下列錯誤:
-
Kotlin Main 類別執行失敗,並顯示以下錯誤:
"Error: Could not find or load main class..."
- 執行某些最佳化作業時,R8 會進入無限迴圈。
- 如果在「Run」視窗中使用「Rerun failed tests」指令,有時系統會誤傳回「No tests were found」訊息。
- D8 未正確處理
invoke-virtual
執行個體,導致發生異常終止的情形並顯示VerifyError
:invoke-super/virtual can't be used on private method
-
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
依附元件設定已遭淘汰的警告內容已更新,現在會針對implementation
和api
設定進一步提供相關指引。想進一步瞭解如何改用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」有多項改善項目:
- 重新編排檢視區塊和版面配置的類別。
- 為檢視區塊和版面配置新增「Common」類別,您可使用「Favorite」指令加入這個類別。
- 改善檢視區塊和版面配置的搜尋功能。
- 新增相關指令,用於開啟特定檢視區塊或版面配置元素的說明文件。
您可以在「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 版中,裝置監控器的重要性已降低。在許多情況下,裝置監控器的可用功能現已改由全新和經過改良的工具來提供。
如要瞭解透過指令列叫用裝置監控器的方式,以及裝置監控器所提供工具的詳細資訊,請參閱裝置監控器的說明文件。