2020年5月28日
,Android Studio
發佈了4.0
,其中的一些亮點包括:
- 新的動作編輯器,可真正實現拖拽式編程;
- 構建分析器,可分析出是什麼原因導致了應用構建變得緩慢;
Java 8
語言的API
,無論APP
的最低API
級別是什麼,都可以使用Java 8
的API
;
此外,還對 CPU Profiler
用戶界面進行了修改,以提供更直觀的工作流程,更容易對線程活動進行並排分析。而改進後的佈局檢查器能獲得APP
的UI的實時數據,可以更加輕鬆地調試設備上顯示的確切內容。
外觀設計
動作編輯器(Motion Editor)
MotionLayout API
擴展了 ConstraintLayout
的豐富功能,能夠幫助 Android
開發人員在APP
開發中管理複雜的運動和小部件動畫。
在Android Studio 4.0
中,新的Motion Editor
讓MotionLayout API
的使用變得更加簡單,它提供了一個用於創建、編輯和預覽MotionLayout
動畫的強大界面;當修改佈局的時候,不再需要手動創建和修改複雜的XML
文件,Motion Editor
能夠自動完成相應文件的修改,並支持編輯約束集、轉場、關鍵幀和視圖屬性。
對於已經在使用 ConstraintLayout
的開發人員,IDE
也可以輕鬆地將其轉換爲 MotionLayout
。
升級佈局檢查器(Layout Inspector)
使用升級後的Layout Inspector,可以實時獲得正在運行的應用程序的最新狀態的數據,並提供解決資源加載的建議,來更直觀地調試UI,直觀的顯示某一特定屬性的值來自何處,亦或者查看嵌套視圖的實時3D顯示。
可以通過從主菜單中選擇 View > Tool Windows > Layout Inspector
來使用佈局檢查器。如果是在能運行API 29
或更高等級的設備上,還可以訪問其他功能,例如:
- 動態佈局層次結構能夠隨着視圖的變化而實時更新;
- 資源能夠有更詳細的屬性值;
- 運行中的應用程序的用戶界面的實時
3D
模型;
因此,可以在運行中的應用程序上完成導航、動畫化和視圖之間的轉換,並且還可以隨時調試。
佈局驗證(Layout Validation)
當要開發適配多種屏幕尺寸和分辨率的APP
時,需要同時驗證對UI
所做的更改能夠在所支持的每個屏幕尺寸上是否得到很好的適配;現在,使用“Layout Validation
”窗口,可以同時在不同的屏幕和分辨率上預覽佈局,因此可以確保APP
在不同設備上的外觀都能正常顯示。
使用也很簡單,只要打開IDE
右上角的“Layout Validation
”選項卡即可。
開發配置
升級CPU Profiler 界面
CPU 分析器
提供了運行中的APP
的線程活動和每條記錄的跟蹤信息;在Android Studio 4.0
中,CPU
記錄與主分析器的時間線分開了,並以組爲單位,以便於分析;
同時,可以向上和向下移動組,或者在組內拖放單個項目進行自定義分析。
爲了便於並排分析,現在可以在線程活動時間軸中查看所有線程活動(包括方法、函數和事件),並嘗試使用新的導航快捷鍵來輕鬆地移動數據,例如使用W、A、S和D
鍵進行精細化縮放和平移。
- 重新設計了系統追蹤界面,使得事件以不同的顏色顯示,以便於獲得更好的視覺區分;
- 優先顯示了運行中的線程,並且可以只顯示選擇了的線程的數據。
編輯器更加智能的代碼提示
R8
是在Android Gradle plugin 3.4.0
中引入的,它將 desugaring
, shrinking
, obfuscating
, optimizing
和dexing
這些功能結合在一起,構建性能得到顯著提高。
在爲R8
創建規則時,Android Studio
提供了更加智能的編輯器特性,例如語法突出顯示、錯誤檢查等功能。
該編輯器特性還可以和Android
項目集成,爲所有類、方法和字段提供完整的符號補全,幷包括快速導航和重構。
Kotlin Android 實時模板
實時模板是一個IntelliJ
編輯器提供的功能,輸入簡單的關鍵字將常見的構造插入到代碼中;Android Studio 4.0
爲Kotlin
代碼提供了Android
特有的實時模板。
例如,只需鍵入Toast
,然後按Tab
鍵就可以快速插入Toast
的模板代碼。完整的實時模板列表可以在Editor > Live Templates
完成設置。
Clangd支持C++
Android Studio 4.0
改用clangd
作爲主要的C++
語言分析引擎,用於代碼導航、完成、檢查、顯示代碼錯誤和警告等,這點需要C++
開發者注意。
此外,還將clang-tidy
集成到了Android Studio
中,要配置clangd
或Clang-Tidy
,可進入IDE
設置(或首選項)對話框,通過 Languages & Frameworks > C/C++ > Clangd or Clang-Tidy
完成配置。
應用打包
Android Gradle
插件4.0.0.0
包含了對Android Studio
的Build Analyzer
的支持,通過使用Java 8
語言的API
(無論你的應用程序的最低API
級別如何),以及在動態特性模塊之間創建功能依賴。
構建分析(Build Analyzer)
由於Android
開發人員依靠各種Gradle
插件和自定義構建邏輯來構建APP
,不當的配置或錯誤的配置會導致構建時間變長,而Build Analyzer
可以分析整個構建過程,高亮顯示整個構建中的插件和任務,並提出對應的解決方案。
Java 8 在D8和R8中不再適用
之前的Android Gradle
插件版本通過一個名爲desugaring
的過程,支持所有API
級別的各種Java 8
語言特性,例如lambda
表達式和方法引用。
在Android Studio 4.0
中,desugaring
引擎已經擴展到支持Java
語言的API
,因此,無論你的APP
的minSdk
版本是多少,都能支持Java
語言的API
。
這意味着即便某些API
只在最近的Android
版本中才有(如java.util.stream
、java.util.function
和java.time
),你的APP
都能使用。
功能依賴項上的功能
當使用Android Gradle plugin 4.0.0
或者更高版本時,可以指定動態功能模塊依賴於另一個功能模塊;這種依賴關係的定義可以確保你的APP
擁有所需的模塊來解鎖額外的功能,從而減少請求,並使APP
更容易模塊化。
例如現在:視頻功能依賴於:相機功能;如果APP
請求:視頻時,Android Studio
會自動下載所需的:相機模塊。
啓用或禁用構建功能的新選項
Android Gradle
插件內置了對最新庫的支持,如數據綁定和視圖綁定,以及構建功能,如自動生成的BuildConfig
類。
然而,可並不是每個項目都需要這些庫和功能。在Gradle
插件的4.0.0.0
版本中,可以禁用離散構建功能,如下圖所示,這可以幫助優化大型項目的構建性能。
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
...
}
}
// Android Gradle插件DSL,用於啓用或禁用構建功能
對Kotlin DSL腳本文件的基本支持
Android Studio 4.0
內置了對Kotlin DSL
構建腳本文件(*.kts
)的支持,這意味着Kotlin
構建腳本提供的全套的快速修復功能都被項目所支持。
在未來一年內,Android
官方也承諾繼續完善Android Gradle
插件的DSL API
,從而帶來Kotlin
腳本API
的突破性的變化。
依賴元數據
當使用 Android Gradle
插件 4.0.0.0
及以上版本的 Android Gradle
插件構建你的應用時,該插件包括了描述應用中的庫依賴關係的元數據。當上傳你的APP
時,Play Console
會檢查這些元數據,以便對你的應用所使用的SDK
和依賴關係的已知問題進行提醒,並在某些情況下提供可操作的反饋來解決這些問題。
這些數據會被壓縮,通過Google Play
的簽名密鑰進行加密,並存儲在您的發佈應用的簽名塊中。如果不想暴露這些信息,可以在模塊的build.gradle
文件中加入以下內容,避免信息的分享。
android {
dependenciesInfo {
// Disables dependency metadata when building APKs.
includeInApk = false
// Disables dependency metadata when building Android App Bundles.
includeInBundle = false
}
} // 禁用apk、app bundle或兩者的依賴元數據
小結
此次的Android Studio 4.0
新版本,主要功能就是這些了,功能雖然不多,但很實用,特別是佈局驗證和動作編輯器功能。最後,來做個小小的總結,梳理下此次更新帶來的主要功能:
外觀設計
Motion Editor
:雖然是一個簡單的界面,但卻使得MotionLayout
的創建、預覽變得更加容易。- 佈局檢查器:獲取實時和更直觀的調試體驗,使得
APP
調試變得更加容易; - 佈局驗證:能夠同時驗證多個設備的使用適配,從而提供應用的適配度和開發效率;
開發配置
- 更新:改進了用戶界面,更直觀,數據更加容易理解和使用;
R8
規則更新:帶來了更加智能的代碼提示,提升了整體的編碼體驗;IntelliJ IDEA 2019.3
平臺更新,性能和質量得到提升;- 實時模板更新:爲你的
Kotlin
代碼定製的Android
專用實時模板; Clangd
支持:Clangd
和Clang-Tidy
默認開啓,對C++
開發者來說,是個福音;
應用打包
- 構建分析器:分析應用打包的全過程,並對其中的一些問題提供解決建議方案;
Java 8
支持更新:無論APP
的最低API
級別如何,都可以使用Java 8
的API
;- 功能上的依賴關係:定義動態特徵模塊之間的依賴關係,自動下載依賴,
APP
模塊化變得更加容易; buildFeatures DSL
:啓用或禁用離散構建功能,如數據綁定等,見不必要的過程;Kotlin DSL
:對Kotlin DSL
腳本文件的基本支持;
完結,老夫雖不正經,但老夫一身的才華!