是時候更新Android Studio 3.5了!不信,你看~

Google I/O 2018 大會,被開發者吐槽,不要老是搞那麼多新特性,而應該多關注Android Studio的質量和穩定性。所有一直都有一些梗:垃圾軟件,毀我青春。

於是從Google I/O 2018 大會後,Google啓動了對Android Studio專項工程:代號磐石(Project Marble),預意爲專注於使集成開發環境(IDE)的基本特性和流程堅如磐石。磐石項目主要集中在三個核心領域:系統健康、功能優化和線上bug修復。下面魚哥分開展示這個領域

系統健康—內存

對於魚哥是最早使用Android Studio工具的,那時還是在14年,雖然13年Studio就誕生了,但是幾乎沒人用。很多人還在用Eclipse開發,我已經切到Android Studio上了,它的前身是IntelliJ IDEA。但是吃內存一直是Android Studio的顯著特點,打開2個以上工程時,IDE的運行速度非常慢。這種體驗背後的原因是由於意外地達到內存壓力或IDE內存泄漏,Google團隊對這個痛點,從18年I/O大會後,作爲專項,深入研究了這個領域,截至到19年I/O大會前,已經解決了超過33個有影響的內存泄漏問題。他們主要是通過大量質量監控,當內部儀表板上持續測量內存不足異常,分析背後堆棧數據,從Android Studio 3.5開始,當IDE耗盡內存時,會捕獲一些關於內存堆大小和堆中主要對象的高級統計信息。有了這些數據,IDE可以做兩件事:建議更好的內存設置和提供更深入的內存分析。


系統健康—自動推薦內存設置

默認情況下,Android Studio的最大內存堆大小爲1.2 GB。對於很多大項目來說,這個數量可能不夠。即使你的機器有大量RAM, IDE也不會超過這個值。在Android Studio 3.5中,IDE會識別出一個應用程序項目在內存容量更高的機器上什麼時候需要更多內存,並在通知中通知你增加內存堆大小。另一種方式,你也可以在Appearance & Behavior → Memory Settings的新設置面板中進行調整。
系統健康—內存堆分析報告上報

有時很難捕獲和重現內存問題並將其報告給Android Studio團隊。爲了解決這個問題,Android Studio 3.5允許開發者觸發一個內存堆轉儲(Help → Analyze Memory Use),IDE會對個人數據進行本地清理、分析並創建一個報告。開發者可以上報這個內存使用報告給Android Studio開發團隊,以排除性能問題。


系統健康狀況-異常監控

通過修改異常上報通道,可以更早定位和發現開發者常見異常的信號。在canary發佈過程中比以前更早地確定優先級並修復問題。減少IDE中閃爍的紅色異常報告圖標。
系統健康—用戶界面凍結

用戶界面(UI)凍結,一直是大家吐槽的問題。表現爲假死,無響應,輸入後,半天才反應。很是揪心。在Android Studio 3.5中,Google擴展了底層Intellij平臺的基礎設施,通過在不斷使用Android Studio時,對開發者經常使用的區域有一個更大的瞭解,以便集中精力解決凍結問題。例如,在磐石項目開發期間,Google團隊在數據中發現IDE中的XML代碼編輯速度明顯較慢。有了這個數據點,Google團隊優化了XML類型,並在Android Studio 3.5中獲得了更好的性能。從在下面兩張圖可以看到,由於輸入延遲的改進,用XML編輯數據綁定表達式更快。


Android Studio 3.4



Android Studio 3.5感受下

系統健康—構建速度

Build速度,一直是個蛋疼的操作,每次魚哥Build時,都想死。尤其我們工程代碼量又多。搞個7-10分鐘,真是改一行代碼,都會醉了。但是影響Build速度的因素實在太多了,比如是否有之前編譯的緩存。要是你重新clean 工程,然後rebuild,那簡直要命。所以除非不得已,纔去clean工程。在Goolge磐石項目中,通過向頂級註釋處理器添加增量構建支持來提高速度,這些處理器包括Glide、AndroidX數據綁定、Dagger、Realm和Kotlin (KAPT)。增量支持可以對構建速度產生顯著影響。例如,在初步分析中,僅爲Kotlin添加增量支持就將谷歌I/O schedule應用程序的非abi子模塊更改從9.1秒提高到了3.6秒——提高了60%。

系統健康-IDE速度

過去,魚哥和大家一樣,覺得IDE運行慢時,就關閉一些Android Studio插件,比如Android NDK支持,以提高性能,讓他爲魚哥更高效使用。這一次,Android Studio 3.5開始,Google團隊刪除了一些不必要的performance hotspots,因爲這些performance hotspots之前影響了IDE的整體速度。

系統健康-Lint代碼分析

Lint代碼分析,大家不陌生吧,昨天魚哥在公司用這個掃描一些提示錯誤和無用文件時,還有可能會出現的空指針情況,非常方便。Android Lint是Android Studio中的一個代碼分析框架,可以幫助識別常見的編程錯誤。但是魚哥的工程一般都是有c/c++的,每次分析時,相當慢。大概20-30分鐘。這嚴重影響了我的熱情。Google團隊經過一些挖掘,在Android Studio 3.5後,發現並修復了幾個較大的內存泄漏,導致Lint性能提高了大約2倍。不信你可以試一試。


系統健康—Windows系統的I/O文件訪問

Android Studio的許多用戶都使用微軟Windows。隨着日復一日的使用,構建時間和安裝速度越來越慢。Google團隊發現一些殺毒程序將Android Studio build和installation directory作爲活動掃描目標。由於這些文件夾會隨着時間的推移創建和刪除許多小文件,I/O和CPU會被部分佔用,從而影響Android Studio的總體build/sync性能。所以關閉殺毒軟件,也是可以提高Android Studio運行的效率。下面這個圖就是關閉殺毒軟件前後對比。


系統健康檢查

從Android Studio 3.5開始,IDE將檢查各種可能受此放緩影響的目錄,包括項目構建目錄,並將它們與排除在外的殺毒目錄列表進行比較。如果Android Studio發現不一致,你將看到一個彈出通知和鏈接,以引導你完成最佳設置。
系統健康狀況-模擬器CPU使用情況

魚哥自從對Android Studio的模擬器太難用的定位後,就一直很少用自帶的模擬器。比如我一般用Genymotion。要麼就是真機。從Android Studio 3.5之後,Google團隊經過研究發現,Android模擬器佔用了過多的CPU週期,即使在模擬器處於空閒狀態時,也會觸發筆記本電腦上的冷卻風扇。在大量分析數據後,發現Google Play Services和相關服務在後臺積極運行,因爲默認情況下模擬器設置爲AC充電而不是電池放電。我們將默認值切換爲電池放電,後臺CPU使用量下降了3倍多。所以以後,可以大膽放心用起來。

接下來就是第二部分,功能優化

Apply Changes

能夠在不重啓應用程序的情況下快速編輯和查看代碼更改,這對於應用程序開發非常高效。比如魚哥改了個Java某行代碼,可以通過Apply Changes,然後Run。兩年前,Google嘗試使用Instant Run機制來解決這個痛點,但一直效果未能達到預期。在Android Studio 3.5中重新構建並實現了一個更實用的方法,叫做Apply Changes。Apply Changes使用Android Oreo及更高版本的特定於平臺的api,以確保可靠和一致的行爲;與Instant Run機制不同,Apply Changes更改不修改APK。爲了支持這些更改,Google團隊重新設計了整個部署管道的架構,以提高部署速度,還調整了run和deployment工具欄按鈕,以獲得更流暢的體驗。
Sync重編譯

明明項目沒有問題,也可以編譯運行到手機上,就是在應用程序代碼中有紅色符號,很蛋疼,這個估計很多人和魚哥一樣都遇到過,解決辦法就是重新gradle sync下。出現的許多紅色符號事件的根本原因是,在最近的Gradle更改中,爲了節省硬盤空間,這些緩存被定期刪除了。從Android Studio 3.5後,Google團隊增加了檢查這種狀態的條件邏輯,以後類似的情況會很少了。
Android Studio升級

目前的Android Studio不是一個無縫的過程,因爲它應該是圍繞修復gradle插件錯誤的許多問題。在Android Studio 3.5中,我們更新了輸出窗口、彈出窗口和對話框的用戶體驗,以幫助開發者明確何時真正需要升級。在最近的幾個版本中,IDE和gradle插件實際上可以獨立地更新。下面是Android Studio的迭代過程
Layout Editor

Google改進了從約束選擇和刪除到更好的設備預覽調整大小等一系列交互。


Android Studio 3.4


Android Studio 3.5

Data-Binding

Google團隊研究了長期存在的數據綁定問題。從性能的角度來看,發現在XML文件中創建數據綁定表達式會導致代碼編輯器嚴重掛起。修復了這個問題之後,改進了代碼補全、導航和重構。

應用程序部署流程

簡化了部署流程,添加了一個新的下拉菜單,可以方便地查看和更改要部署到的設備,以及一個要部署到多個設備的新菜單項。這點魚哥體會就是像iOS的XCode工具一樣了
c++的改進

對於魚哥來說,這個c++的改進,算是喜大普奔了,c++項目支持也是項目Marble中的一個重點領域。對於大型項目,CMake構建現在要快25%。此外,一個改進的單一構建變量用戶界面面板,它允許開發者單獨指定ABI架構目標。最後,Android Studio 3.5允許在構建中並排使用多個版本的Android NDK的Grale版本,這就意味着多重構建,並減輕NDK版本和Android gradle插件之間的不兼容性。
Intellij平臺更新

Android Studio 3.5開始,更新了2019.1 Intellij平臺版本的特性和質量增強。2019.1 Intellij的更新從定製主題到更好的版本控制系統集成都有一系列的改進。

動態特性支持

Android Studio 3.5增強了對應用程序包特性的支持,爲應用程序包添加了動態特性支持。開發者可以根據硬件特性(如OpenGL版本、對AR的支持)設置條件交付,或者根據API級別和用戶國家設置條件。


模擬器摺疊和Googel Pixel設備支持

這個IDE版本包括Pixel 3a和Pixel 3a XL的Android模擬器皮膚。此外,Android Studio支持創建可摺疊的Android虛擬設備。

Chrome OS支持

Android Studio 3.5現在正式支持Chrome OS 75操作系統,更高版本支持基於x86的高端chromebook操作系統。比如在Chrome OS上,一個Android Studio的安裝程序,支持應用程序部署到外部USB連接的Android設備上。


最後一部分線上Bug修復就非常多了,看看這些bug,給個鏈接:https://source.android.com/source/report-bugs#developer-tools,大家有bug,也可以去提。


說句題外話,有不少人想加魚哥微信,魚哥姑且放出來,但是坑位有限哦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章