Android Studio 4.0 正式版發(fā)布

作者 / Adarsh Fernando, Product Manager
即便在如今這個變幻莫測的時勢里,我們依然看到來自世界各地開發(fā)者們的佳作——那就是 Android 上一個又一個精彩的應用。不論您是在廚房里用一臺筆記本工作,還是在家中有更好的辦公環(huán)境,您都需要更好的、與時俱進的趁手工具: Android Studio 4.0。更高效的代碼編寫、更快捷的編譯速度,讓您盡情地為用戶們設計最棒的應用,即刻下載正式版開始使用吧!


Android Studio 4.0 的亮點眾多,這里列出幾項: 全新的 Motion Editor,可助您輕松打造應用動效;Build Analyzer 可以幫您找到導致編譯速度緩慢的癥結(jié);您還可以盡情使用 Java 8 API,無需考慮您應用的最低 API 級別。另外,我們還根據(jù)大家的反饋調(diào)整了 CPU Profiler 界面,使得工作流更加直觀,而且還提供了并排顯示功能幫助您更輕松地分析線程活動。Layout Inspector 現(xiàn)在會如實顯示應用 UI 中的真實數(shù)據(jù),方便您更好地調(diào)試設備上顯示的內(nèi)容。

Android Studio 4.0 正式版的發(fā)布,離不開預覽版用戶們早期給出的寶貴反饋。請繼續(xù)閱讀本文,或者觀看下方視頻來詳細了解 4.0 正式版的亮點和新功能。如果您已經(jīng)迫不及待想要上手一試,請移步我們的官方網(wǎng)站下載 Android Studio 4.0 正式版

設計

Motion Editor
MotionLayout API 進一步拓展了 ConstraintLayout 的豐富功能,使得 Android 開發(fā)者能在應用中管理復雜的動效和 widget 動畫。Android Studio 4.0 中新加入的 Motion Editor 讓開發(fā)者能在其界面中創(chuàng)建、編輯和預覽 MotionLayout 動畫,從而更輕松地駕馭這個 API。從創(chuàng)建文件,到編輯約束設置、轉(zhuǎn)場動畫、關(guān)鍵幀以及視圖屬性,Motion Editor 都會為您代勞,再也無需手動創(chuàng)建和編輯復雜的 XML 文件——當然如果您的確需要查看的話,也只需要輕點一下鼠標即可。我們提供的便捷體驗還不止于此: 如果您已經(jīng)在使用 ConstraintLayout,可以通過 IDE 輕松將其轉(zhuǎn)換成 MotionLayout。前往開發(fā)者官網(wǎng)了解更多。

△ 在 Motion Editor 中創(chuàng)建、編輯和預覽動畫

Layout Inspector 全新升級
想要搞清楚某個屬性的取值從何而來?或者想通過實時的 3D 畫面輕松查看視圖的嵌套層級?全新的 Layout Inspector 就可以幫您輕松做到。它提供的數(shù)據(jù)會與正在運行的應用完全同步,更會讓您對各個資源在應用中如何排布和計算一覽無余,使得 UI 調(diào)試變得更加簡單直觀。

△ 通過 Layout Inspector 實時調(diào)試應用 UI

在主菜單中依次選擇 View > Tool Windows > Layout Inspector 來使用 Layout Inspector。如果您的應用是部署到 API 等級 29 或以上的設備,則可以使用到更豐富的功能,比如隨著視圖變化動態(tài)更新的布局層次結(jié)構(gòu)、幫助您更好了解資源取值解析的詳細視圖屬性信息、以及可以展示運行時 UI 結(jié)構(gòu)的實時 3D 模型。您可以盡情在應用中導航、觸發(fā)動畫和視圖轉(zhuǎn)場,在這同時依然能精確調(diào)試 UI,讓每一個像素都盡如人意。前往《Android Studio 4.0+ 中新的 UI 層次結(jié)構(gòu)調(diào)試工具》了解更多。

Layout Validation

△ 使用 Layout Validation 在多個屏幕中對比 UI

在為多種硬件配置、屏幕尺寸和分辨率開發(fā)應用時,您需要確保在 UI 中做出的每一處修改都能在各個屏幕上完美展現(xiàn)。通過 Layout Validation 窗口,您可以同時預覽 UI 在不同屏幕、不同配置中的呈現(xiàn)結(jié)果,從而輕松讓應用適配好這些設備。只需點擊 IDE 右上角的 Layout Validation 標簽即可打開本窗口。

開發(fā)與分析

CPU Profiler 界面升級

△ 升級后的 CPU Profiler 界面

CPU Profiler 的設計目的是為您呈現(xiàn)應用中線程活動以及跟蹤數(shù)據(jù)的豐富信息。開發(fā)者們在反饋中希望我們讓這個工具的 UI 導航起來更為直觀,以及讓其中的數(shù)據(jù)更易于解讀,于是我們在這個版本中帶來了新的界面來回應大家的需求。在 Android Studio 4.0 中,CPU 活動記錄從分析器的主時間軸中分離出來,并成組展現(xiàn),以便于分析。您可以上下移動分組,也可以通過拖放操作重新排列組內(nèi)的項目,從而打造更定制化的呈現(xiàn)布局。

△ 并排顯示使得分析線程活動更加輕松

并排顯示使得分析更加輕松,您現(xiàn)在可以在 Thread Activity 時間軸中查看所有線程活動 (包括方法、函數(shù)和事件),以及使用新加入的導航快捷鍵在數(shù)據(jù)間移動——如使用 W/A/S/D 四鍵進行精細的縮放和平移。我們還重新設計了 System Trace 界面,用不同的顏色來區(qū)分顯示事件,從而在視覺上更加醒目。在線程排序方面,更繁忙的線程會優(yōu)先展示,幫助您專注于所選線程中的數(shù)據(jù)。最后,在我們投入資源改善 CPU Profiler 的質(zhì)量后,我們發(fā)現(xiàn)自 Android Studio 3.6 以來用戶報告的記錄錯誤率有了明顯下降。本次更新還帶來了更多值得嘗試的改進,前往開發(fā)者官網(wǎng)了解更多。

編寫代碼縮減規(guī)則時的智能編輯器功能

△ 編寫 R8 代碼規(guī)則時的智能編輯器功能

我們在 Android Gradle 插件 3.4.0 中引入了 R8,使得字節(jié)碼轉(zhuǎn)換 (desugaring)、縮減、混淆和 dex 處理能一步到位,這讓構(gòu)建性能得到了顯著的提升。在創(chuàng)建 R8 的規(guī)則文件時,Android Studio 現(xiàn)在提供了智能編輯器功能,包括語法高亮、補全以及錯誤檢查等。編輯器還與您的 Android 項目集成,為所有的類、方法和字段提供完整的符號補全,并提供快速導航和重構(gòu)功能。

IntelliJ IDEA 2019.3 平臺更新

Android Studio IDE 核心已經(jīng)整合了 IntelliJ IDEA 2019.32019.3.3 版本的更新。這些更新主要用于提升 IDE 整體的質(zhì)量和性能。

Kotlin Android 實時模板

實時模板 (Live Template) 是 IntelliJ 中一個很方便的功能: 您只需輸入簡單的關(guān)鍵詞即可將常見的構(gòu)造插入自己的代碼中。Android Studio 現(xiàn)在為您的 Kotlin 代碼提供了 Android 專用的實時模板。例如,您現(xiàn)在只需輸入 toast 并按下 Tab 鍵即可快速插入一個 Toast 消息框。如需查看可用實時模板的完整列表,請打開 Settings (或 Preferences) 對話框,并依次選擇 Editor > Live Templates。

為 C++ 提供 Clangd 支持

對使用 C++ 語言的開發(fā)者,我們現(xiàn)在改用 clangd 作為主要的語言分析引擎,用于代碼導航、補全、檢查、以及顯示代碼錯誤和警告。我們現(xiàn)在還將 clang-tidy 綁定在 Android Studio 中。想要配置 clangd 或 Clang-Tidy 的行為邏輯,請打開 IDE 的 Settings (或 Preferences) 對話框,并依次選擇 Languages & Frameworks > C/C++ > Clangd (或 Clang-Tidy),然后設置相應的選項。

構(gòu)建

Android Gradle 插件 4.0.0 通過使用 Java 8 API (無需考慮您應用的最低 API 級別) 為 Android Studio 帶來了 Build Analyzer 功能,并支持在動態(tài)功能模塊之間創(chuàng)造功能對功能的依賴性。完整的更新列表請查看 Android Gradle 插件 4.0.0 版本說明

Build Analyzer

△ 使用 Build Analyzer 發(fā)現(xiàn)構(gòu)建性能瓶頸

Android 開發(fā)者會使用多種 Gradle 插件以及自定義構(gòu)建邏輯來為自己的應用定制構(gòu)建系統(tǒng)。然而,過時或錯誤配置的任務會延長構(gòu)建時間,從而拖累開發(fā)效率,并導致開發(fā)人員心情沮喪、效率下降。Build Analyzer 可以幫助開發(fā)者找到構(gòu)建中的瓶頸,那些顯著拖累構(gòu)建時間的插件和任務會被高亮顯示,并同時給出緩解速度回退的操作建議。前往開發(fā)者官網(wǎng)了解更多。

Java 8 語言庫在 D8 和 R8 中的字節(jié)碼轉(zhuǎn)換 (desugaring)

上一個版本的 Android Gradle 插件通過字節(jié)碼轉(zhuǎn)換操作,在所有 API 等級中支持了大量 Java 8 的語言功能,比如 lambda 表達式和方法引用。在 Android Studio 4.0 中字節(jié)碼轉(zhuǎn)換引擎得到了擴展,現(xiàn)在不管您應用的 minSdkVersion 是多少,都可以使用 Java 8 API (比如 java.util.stream、java.util.function 和 java.time)。前往開發(fā)者官網(wǎng)了解更多。

功能模塊層級的依賴關(guān)系

△ 功能對功能的依賴性

在使用 Android Gradle 插件 4.0.0 及以上版本時,您可以指定一個動態(tài)功能模塊依賴于另一個功能模塊。這種依賴關(guān)系使得您的應用可以獲得所需的模塊來解鎖更豐富的功能,從而減少下載需求,也使得應用更易于模塊化。比如,一個 :video 功能可以依賴 :camera 功能。如果用戶需要使用錄制視頻的功能,您的應用會在請求 :video 時自動下載所需的 :camera 模塊。前往開發(fā)者官網(wǎng)了解更多。

新的構(gòu)建功能開關(guān)選項

Android Gradle 插件內(nèi)置了對現(xiàn)代代碼庫 (如數(shù)據(jù)綁定和視圖綁定) 和構(gòu)建功能 (如自動生成 BuildConfig 類) 的支持。但您可能不是每個項目都需要用到這些庫和功能。在插件的 4.0.0 版本中,您可以單獨關(guān)閉某個構(gòu)建選項 (如下所示),從而優(yōu)化大型項目的構(gòu)建性能。關(guān)于 DSL 和您可以操作的完整功能列表,請參閱版本說明


android {
    // The default value for each feature is shown below.
    // You can change the value to override the default behavior.
    buildFeatures {
        // Determines whether to support View Binding.
        // Note that the viewBinding.enabled property is now deprecated.
        viewBinding = false
        // Determines whether to support Data Binding.
        // Note that the dataBinding.enabled property is now deprecated.
        dataBinding = false
        ...
    }
}

△ 用于啟用/禁用構(gòu)建功能的 Android Gradle 插件 DSL

對 Kotlin DSL 腳本文件的基礎支持
Android Studio 4.0 現(xiàn)在已經(jīng)內(nèi)置了對 Kotlin DSL 構(gòu)建腳本文件 (*.kts) 的支持,這意味著 Kotlin 構(gòu)建腳本有了完整的快速修復功能,并且能在 Project Structure 窗口中進行操作。雖然我們對使用 Kotlin 來配置構(gòu)建有很高的期待,但接下來的一年中我們依然會繼續(xù)完善 Android Gradle 插件的 DSL API,這可能會給 Kotlin 腳本用戶帶來 API 的重大變更 (breaking change)。從長遠來看,這些改善終將使得 DSL 對 Kotlin 腳本用戶來說更簡單易用。

依賴元數(shù)據(jù)

在使用 Android Gradle 插件 4.0.0 及以上版本構(gòu)建應用時,插件中會包含描述編譯到您的應用中的庫依賴關(guān)系的元數(shù)據(jù)。在上傳應用時,Play Console 會檢查這些元數(shù)據(jù),并告知您哪些 SDK 以及應用中的依賴存在問題,在某些時候還會給出如何解決的反饋。

這些數(shù)據(jù)會被壓縮,通過 Google Play 的簽名密鑰進行加密,并存儲在發(fā)布的應用的簽名模塊中。如果您不愿意分享這些信息,可以在模塊的 build.gradle 文件中加入以下內(nèi)容:

android {
    dependenciesInfo {
        // Disables dependency metadata when building APKs.
        includeInApk = false
        // Disables dependency metadata when building Android App Bundles.
        includeInBundle = false
    }
}

△ 禁用 APK 或 App Bundle 中的依賴元數(shù)據(jù)

現(xiàn)在讓我們回顧一下 Android Studio 4.0 帶來的改進以及新功能:

設計:

  • Motion Editor: 輕松創(chuàng)建、編輯和預覽 MotionLayout 動畫
  • Layout Inspector 全新升級: 更加直觀的實時調(diào)試體驗
  • Layout Validation: 在多個屏幕上同時對比 UI

開發(fā)與分析:

  • CPU Profiler 更新: UI 更直觀、更易于瀏覽,數(shù)據(jù)更易解讀
  • R8 規(guī)則更新: 編寫代碼縮減規(guī)則的智能編輯器功能,如語法高亮、補全和錯誤檢查
  • IntelliJ IDEA 2019.3 平臺更新: 性能和質(zhì)量得到提升
  • 實時模板更新: 為 Kotlin 提供 Android 專用實時模板
  • Clangd 支持: 默認啟用 Clangd 和 Clang-Tidy

構(gòu)建:

  • Build Analyzer: 了解和找到構(gòu)建時的性能瓶頸
  • Java 8 語言支持更新: Java 8 API 現(xiàn)在均可使用,與應用最低 API 等級無關(guān)
  • 功能對功能的依賴性: 定義兩個動態(tài)功能模塊之間的依賴
  • buildFeatures DSL: 逐個啟用/禁用構(gòu)建功能,如數(shù)據(jù)綁定
  • Kotlin DSL: 對 Kotlin DSL 腳本文件的基礎支持

請參閱版本說明,了解本次發(fā)布的完整信息。

即刻開始使用

請前往下載頁面獲取 Android Studio 4.0。如果您使用的是舊版 Android Studio,可以直接更新到最新版本。

我們一如既往地期待著大家的反饋,如果您喜歡某個功能,或者發(fā)現(xiàn)了問題,請隨時告訴我們。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,196評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,688評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,654評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,456評論 6 406
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,955評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,195評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,725評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,608評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,802評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,048評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,422評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,673評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,424評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,762評論 2 372