對於開發者來說,Android 的開發者選項里有哪些實用的功能?

常用的有:

1.查看布局邊界

2.模擬位置

3.USB 調試

對於開發者來說,還有哪些實用的功能?


1.打開Show GPU Overdraw的選項

Overdraw(過度繪製)描述的是屏幕上的某個像素在同一幀的時間內被繪製了多次。在多層次的UI結構裡面,如果不可見的UI也在做繪製的操作,這就會導致某些像素區域被繪製了多次。這就浪費大量的CPU以及GPU資源。

當設計上追求更華麗的視覺效果的時候,我們就容易陷入採用越來越多的層疊組件來實現這種視覺效果的怪圈。這很容易導致大量的性能問題,為了獲得最佳的性能,我們必須盡量減少Overdraw的情況發生。

我們可以通過手機設置裡面的開發者選項,打開Show GPU Overdraw的選項,可以觀察UI上的Overdraw情況。

藍色,淡綠,淡紅,深紅代表了4種不同程度的Overdraw情況,我們的目標就是盡量減少紅色Overdraw,看到更多的藍色區域。

2.開發者選項,選擇Profile GPU Rendering,選中On screen as bars的選項。

選擇了這樣以後,我們可以在手機畫面上看到豐富的GPU繪製圖形信息,分別關於StatusBar,NavBar,激活的程序Activity區域的GPU Rending信息。

隨著界面的刷新,界面上會滾動顯示垂直的柱狀圖來表示每幀畫面所需要渲染的時間,柱狀圖越高表示花費的渲染時間越長。

中間有一根綠色的橫線,代表16ms,我們需要確保每一幀花費的總時間都低於這條橫線,這樣才能夠避免出現卡頓的問題。

每一條柱狀線都包含三部分,藍色代表測量繪製Display List的時間,紅色代表OpenGL渲染Display List所需要的時間,黃色代表CPU等待GPU處理的時間。

這兩個設置,對優化app性能非常方便,誰用誰知道


最近剛好花了點時間整理研究它,為此寫了一篇文章,貼出內容大家可以看看。

Android開發者選項,看起來很簡單的事情,其實很多同學對它了解得不夠,Google用心良苦得為我們設計了這麼多小開關都是有它的作用的,今天也花了點時間,過了一遍全部的30多個開關,從中整理出15個對日常Android開發比較有幫助的選項。

需要指出的是,不同的ROM對開發者選項的支持不一樣,精簡掉一些很正常,我下面提到的都是官方支持的功能,當然不同的官方版本支持程度也不一樣,你手機上找不到也別奇怪。

抱歉這裡不介紹開發者選項在哪怎麼開啟之類的問題。

1. Stay awake

充電時保持屏幕喚醒,開發的時候,時不時的鎖屏真是夠了,開啟它後只要插著USB線就不需要總去解鎖屏幕啦。

2. Select runtime(Dalvik or ART)

ART runtime下你的應用會更加絲滑,目前高版本的Android上已經直接是ART runtime了,但作為Android開發也許需要保證你的應用在兩種runtime下都能正常運行,這可能是測試時需要更多考慮的。

3. Process stats

裡面有關於當前運行進程的一切信息,對於一般用戶,它就是一堆無意義的數字,對於Android開發人員來說,調試時這些信息也許可以幫你大忙。

4. USB debugging

這個無需介紹,不開它怎麼調試呢?(雖然現在都流行無線調試了)

5. Allow mock locations

當你的應用需要用到GPS功能,獲取位置信息時(比如天氣應用),可以通過它搭配一些位置模擬應用,模擬全球任何地點。(還能幹什麼?機智的你肯定想到啦)

6. Show surface updates

在界面繪製時,閃爍提醒,開啟它後簡直能閃瞎你的眼睛,但有時候我們需要精確知道具體的界面繪製細節時,不得不需要忍受這種折磨。

7. Show layout bounds

顯示布局格子,當你看到一個應用有很棒的界面效果,想知道它是怎麼布局的?開啟這個功能即可。我更常用的使用場景是:每當有PM過來問我人家這個界面是Native實現的,還是類似Hybrid方案的Web實現時,我就讓他開啟這個功能,WebView是一個整體的格子,Native View是各種小格子組合而成。(除非自己重繪實現自定義View, 一般複雜布局也不會這麼干)

8. Force RTL layout direction

強制RTL布局,RTL也就是Right To Left,阿拉伯國家一般有這種文化,類似古時候的中國,文字從右往左讀,包括界面布局也是從右往左的,感覺操作習慣都跟我們是鏡像的,如果你跟我一樣不幸需要做這種坑爹適配的話,這也是必須掌握的技能。

9. Animation scale

動畫的尺度、速度調整也是很有用的功能,尤其在實現複雜的組合動畫效果時,調慢點可以看得更清楚,當然你可以在自己代碼里調慢,但每次改代碼重新build很麻煩對不對?而且如果是PM走過來讓你研究一下某款App的酷炫動畫效果呢?

10. Simulate secondary displays

它允許你模擬不同屏幕尺寸下應用的表現,IDE里雖然也有類似的功能,可那畢竟只是個靜態的效果。

11. Debug GPU overdraw

這裡是指不正確的過度繪製:

  • 原色: 沒有過度繪製

  • 藍色: 一次過度繪製

  • 綠色: 兩次過度繪製

  • 粉色: 三次過度繪製

  • 紅色: 四次及以上過度繪製。

值得提醒的是,過度繪製有時是無法避免的,Android建議是不要超過一次過度繪製,也就是可以是藍色的,不能綠了。

12. Strict mode enabled

嚴苛模式下,當應用做了一些影響性能的事情,屏幕會閃一下提醒你。你也可以在代碼里為自己的應用開啟嚴苛模式,一旦發現一些性能問題,就會有詳細Log輸出, 為避免影響線上用戶,建議只在Debug模式下開啟。

13. Show CPU usage

在你屏幕右上角顯示一個小窗口,提示當前CPU的各種信息,在性能調試時會有一些幫助,看是否是CPU的負載過高導致了性能問題。

14. Profile GPU rendering

看下面這張圖,就明白它的作用了,開啟後,會在下方顯示一張實時繪製圖,記住那條綠線是性能流暢與否的底線,超過的時刻就會出現掉幀,就會有卡頓的感覺,界面性能調優的一個最重要指標就是將所有界面操作盡量優化到那條綠線以下。具體的原理可以看胡凱同學的Android性能優化典範,我的公眾號里也收錄了他這篇經典文章。

15. Don"t keep activities

開啟這個選項後,當你從Activity A跳轉到Activity B時,Activity A就會被立即銷毀,這一般用來模擬設備內存不足時後台Activity被銷毀的場景,如果你的應用能做到開啟它時功能仍基本正常,說明代碼設計得比較合理,不同Activity之間的耦和很低,對於複雜業務的應用來說,能做到這點真心不容易。

原文在我的簡書:15個必知的Android開發者選項

我最近運營了一個Android開發相關的公眾號,主要分享一些開發經驗以及Android最佳實踐,最好用的工具與服務等等,大家有興趣可以搜索Android程序員(AndroidTrending)或掃碼關注。

http://weixin.qq.com/r/6kxxaWbEHztgrSIK9xn4 (二維碼自動識別)


一個高中生只覺得把手機弄成這樣挺好玩的。。。


我最常用的2項

1.show GPU overdraw 用來優化布局,防止出現view的層級過多

2.do not keep activities 用來檢查是否有一些狀態沒有保存,不過我更常用來檢查別人是不是寫的有問題(哈哈,我自己一般都是開啟這個選項,所以代碼通常會注意保存狀態)


我想說兩個在 CM 的開發者工具中很實用的功能:網路調試和 StayOnUSB,可惜在大多數 ROM (包括 AOSP)中都沒有開放出來這兩個選項

  1. 網路調試,就是可以通過網路 adb 連接 Android 設備,可以基於網路來使用依賴 ADB 的一切活動(調試應用、提取導入文件、後台裝流氓軟體、rm -rf / 等)
  2. StayOnUSB,保持設備屏幕在 USB 連接時常亮(不影響充電時自動熄屏)。這個真是吐血推薦了,我覺得 AOSP 中開發者選項不提供這個簡直是喪心病狂。如果說前一個是因為安全問題不開放可以理解,這個真心是好用且無副作用,開發時一會兒點開一下屏幕簡直太不能忍。

不過這兩者都可以在不 Root 的方式下通過 ADB 設置,跟這個問題無關就不在這裡說明了。


這個選項容易被忽視,它可以讓你知道是不是有什麼Service卡住了。


Android調試之開發者選項常用功能


說個我在實際開發過程中用到的吧,「顯示布局邊界」這個功能很有用,微調布局的時候能看到各個控制項的嵌套關係,Padding和Margin都會用紅色縫隙標記出來,很方便


我用 [顯示布局邊界] 來判斷這個界面或者某個部位是不是html5實現。


應該常用的有gpu呈現模式分析吧,以前做了那麼久的使用者,做討厭的就是軟體莫名卡頓了。。所以,盡量要讓柱狀圖在綠線之下才好。


是奇技淫巧


推薦閱讀:

為什麼安卓系統的很多軟體都會亂自動啟動的?
如何評價魅族在MWC上展示的快充技術?
學好演算法對一個程序員來說是必須的嗎?如果是,至少應該學到哪種程度?
android開發是否被h5代替?
Android Design 與 iOS 人機界面設計的區別是什麼?

TAG:程序員 | Android應用 | Android開發 | Android手機 | Android |