探索Android手機(jī)開發(fā)者選項(xiàng)

有那么一次面試,聊到了真機(jī)調(diào)試的開發(fā)者選項(xiàng),很遺憾,我除了會打開下USB調(diào)試,偶爾打開顯示布局邊界看看布局,偶爾開啟調(diào)試GPU過度繪制看一眼,都沒有好好研究過其他選項(xiàng)調(diào)試對于我們Android項(xiàng)目開發(fā)有什么用處,大概這就是高級開發(fā)工程師與初級小菜鳥的區(qū)別吧,那次面試確實(shí)也發(fā)現(xiàn)了自己很多的不足,懂的東西都是皮毛,深入一點(diǎn)點(diǎn)都是一臉懵逼,噗~不說傷心事了, 好啦,每天進(jìn)步一點(diǎn)點(diǎn),現(xiàn)在來研究看看吧。

我現(xiàn)在用的小米5s,一般安卓手機(jī)默認(rèn)沒有開啟開發(fā)者選項(xiàng),因此需要進(jìn)入設(shè)置 -> 關(guān)于手機(jī) ->連續(xù)點(diǎn)擊N次MIUI版本,即可開啟開發(fā)者模式了,其他安卓手機(jī)類似,點(diǎn)擊N次Android版本號便可開啟了。然后在設(shè)置中的其他設(shè)置或者高級設(shè)置等等菜單中即可看到開發(fā)者選項(xiàng)的菜單了。


截取自小米5s
  • 開啟開發(fā)者選項(xiàng)

開發(fā)者選項(xiàng)的總控制開發(fā),只有開啟它下面一切開關(guān)才是可用狀態(tài)。

  • 不鎖定屏幕

充電時(shí)不會休眠,主要就是方便開發(fā),在開發(fā)過程之外的情況下記住了要關(guān)閉,不然得多費(fèi)電??!

  • 直接進(jìn)入系統(tǒng)

點(diǎn)擊屏幕直接進(jìn)入系統(tǒng)而不會鎖屏,這里我的手機(jī)不能打開是因?yàn)槲议_了鎖屏密碼,下面小字也有說明需要無屏幕密碼。

  • 打開藍(lán)牙數(shù)據(jù)包日志

抓取所有的藍(lán)牙數(shù)據(jù)包到一個文件中,在調(diào)試藍(lán)牙程序的時(shí)候比較方便。

  • 打開藍(lán)牙調(diào)試日志

抓取所有的藍(lán)牙調(diào)試日志,在調(diào)試藍(lán)牙程序的時(shí)候比較方便。

  • 設(shè)備解鎖狀態(tài)
截取自小米5s
  • USB調(diào)試

開啟后,手機(jī)才能連接到電腦,然后調(diào)試。這個總開關(guān)開啟了,才可以開啟下面的USB調(diào)試和安裝。這個可用于在計(jì)算機(jī)和設(shè)備之間復(fù)制數(shù)據(jù)、在設(shè)備上安裝應(yīng)用而不發(fā)送通知以及讀取日志數(shù)據(jù)。

  • 撤銷USB調(diào)試授權(quán)

針對之前授權(quán)過的所有計(jì)算機(jī)撤銷USB調(diào)試的訪問權(quán)限。

  • USB安裝

是否允許通過USB安裝應(yīng)用,這個需同意,不然AS運(yùn)行的程序無法直接安裝在真機(jī)上。

截取自小米5s
  • USB調(diào)試(安全設(shè)置)

這個比上面USB調(diào)試要高級點(diǎn),可讓開發(fā)者使用電腦軟件通過USB模擬手勢點(diǎn)擊以及修改手機(jī)系統(tǒng)設(shè)置或權(quán)限。

  • 選擇模擬位置信息應(yīng)用

允許代碼模擬位置,比如地圖類應(yīng)用需要測試在外地的使用情況,通過開啟此項(xiàng)選項(xiàng)可以通過代碼模擬位置

  • 啟用視圖屬性檢查功能

具體就是進(jìn)行視圖屬性檢查吧,怎么用不清楚,用到的時(shí)候再來補(bǔ)充,開啟或關(guān)閉都會直接黑屏一瞬間。

  • 選擇調(diào)試應(yīng)用

允許開發(fā)者在電腦上調(diào)試手機(jī)應(yīng)用。一般情況下無用。

  • 等待調(diào)試器

在選擇了一個調(diào)試應(yīng)用的情況下可開啟,調(diào)試應(yīng)用匯在執(zhí)行前等待附加調(diào)試器。

  • 通過USB驗(yàn)證應(yīng)用

文字描述了,就是通過ADB/ADT檢查安裝的應(yīng)用是否存在有害行為。嘗試幾把,無法關(guān)閉掉,暫時(shí)不知道如何關(guān)閉,默認(rèn)開啟了,這樣也好,安全嘛。

  • 日志記錄器緩沖區(qū)大小

可設(shè)置日志的緩沖區(qū)大小

截取自小米5s
  • 無線顯示認(rèn)證

顯示無線顯示認(rèn)證選項(xiàng)

  • 啟用WLAN詳細(xì)日志記錄功能

提升WLAN日志記錄級別(在WLAN選擇器中顯示每個SSID的RSSI)

截取自小米5s
  • 主動從WLAN網(wǎng)絡(luò)切換到移動數(shù)據(jù)網(wǎng)絡(luò)

字面意思,試驗(yàn)開啟后連上的wifi并沒有就立即切換到移動數(shù)據(jù),應(yīng)該只是允許當(dāng)WLAN信號比較弱的時(shí)候,系統(tǒng)自動將WLAN網(wǎng)絡(luò)切換成數(shù)據(jù)流量。

  • 一律允許WLAN漫游掃描

根據(jù)接口中目前的數(shù)據(jù)流量允許/禁止WLAN漫游掃描。

  • 實(shí)用舊版DHCP客戶端

找到兩種回答:手機(jī)DHCP客戶端主要是為了從DHCP服務(wù)器獲得IP從而實(shí)現(xiàn)上網(wǎng),而通常DHCP客戶端需要從DHCP服務(wù)器獲得IP都是有四次協(xié)商,從而獲得IP。這就是舊版dhcp客戶端的意思。使用舊版DHCP客戶端 使用無線體驗(yàn)好一些。
舊版只能適配IPv4協(xié)議,新版可以適配IPv4和IPv6。

  • 始終開啟移動數(shù)據(jù)網(wǎng)絡(luò)

移動網(wǎng)絡(luò)以及WLAN一同開啟,即使連上wifi,方便哪方網(wǎng)絡(luò)狀態(tài)不行快速切換。

  • 選擇USB配置
截取自小米5s

用于選擇USB配置,連接電腦主要的用處。

  • 顯示觸摸操作

為觸摸提供視覺提示,開啟的時(shí)候,會有個圓圈圈表示手指的觸摸的地方,喜歡這種效果就打開。

  • 指針位置

開啟后,會有個十字架,而且會有平滑的線顯示手指觸摸的位置,只顯示當(dāng)前觸摸數(shù)據(jù),頂端還有坐標(biāo),主要是為了方便開發(fā),可方便對比開發(fā)得到的坐標(biāo)數(shù)據(jù)。

  • 顯示Surface更新

屏幕稍微有點(diǎn)變化就閃爍,開啟后隨便一操作閃得我都要暈了。大概是用來監(jiān)控surface變化吧,微小變化,可能直觀不是特別能看出來的,閃爍一下就很明顯了。

截取自小米5s
  • 顯示布局邊界

開啟了就顯示剪輯,邊距,各種線,看的我眼也要花了,可以用于開發(fā)看其他app的布局,只是沒有數(shù)據(jù),只有各種邊界線。

  • 強(qiáng)制使用從右到左的布局方向

這個開啟就神奇了,雖然文字沒有倒過來噢,文字圖標(biāo)左右都反過來了,看效果。


截取自小米5s

用處嘛,可能對有些人來說說這樣子布局看起來更習(xí)慣吧。

  • 窗口動畫縮放

可以選擇彈出窗口動畫縮放速度,也可以關(guān)閉動畫,都體驗(yàn)下就能發(fā)現(xiàn)動畫效果了,比例越低,則切換動作較為生硬,動畫效果更快。

  • 過渡動畫縮放

差不多設(shè)置效果同上,表示的是切換頁面時(shí)候的動畫效果。

  • 動畫程序時(shí)長縮放

同上,表示啟動app時(shí)候的動畫。

  • 模擬輔助顯示設(shè)備

選擇其中一種類型的設(shè)備會在當(dāng)前的屏幕上再出現(xiàn)一個模擬的顯示設(shè)備,顯示的還是手機(jī)上當(dāng)前窗口的頁面,比較小。就是等于一個顯示當(dāng)前屏幕的一個小窗口。開發(fā)過程中也許,在適配的時(shí)候,有點(diǎn)用處,可以利用一下。

  • 強(qiáng)制進(jìn)行GPU渲染

在應(yīng)用程序中使用2D程序加速,Android的軟件應(yīng)用的界面可以使用CPU或GPU渲染,包括桌面,以前版本的圖形界面的渲染工作只有部分由GPU來完成,其他的還是由CPU來做,選上這個就是強(qiáng)制由GPU來渲染,由于GPU處理圖形比CPU好,所以GPU渲染應(yīng)用的界面會更流暢,同時(shí)減輕CPU的壓力,就是俗稱的硬件加速,會增加界面的流暢程度。

但強(qiáng)制GPU也是有缺陷的。第一是強(qiáng)制GPU加速功能會增加功耗,降低待機(jī)時(shí)間。第二是,部分舊程序本身不支持GPU渲染,沒有硬件加速hwa的就會出現(xiàn)崩潰。比較老的程序因?yàn)镾DK版本低不支持GPU加速,或者開發(fā)時(shí)默認(rèn)不開啟GPU渲染,遇上gpu強(qiáng)制渲染就會出現(xiàn)問題。

想開啟就開啟嘍~

  • 顯示GPU視圖更新

開啟后整個屏幕都是紅的,屏幕上的區(qū)域更新時(shí)閃爍響應(yīng)的屏幕區(qū)域各種閃爍。還是別開了,眼都花了。當(dāng)然開發(fā)需要提示的時(shí)候還是開啟下吧。

截取自小米5s
  • 顯示硬件層更新

下面小字也描述了,F(xiàn)lash硬件層進(jìn)行更新時(shí)會顯示為綠色,大概做手機(jī)硬件軟件一塊兒的開發(fā)會開啟吧。

  • 調(diào)試GPU過度繪制

使用GPU繪圖時(shí),在屏幕上繪制不同的顏色來表明過度繪制的情況。
過度繪制情況的好壞通過顏色來表示,從藍(lán)色、綠色、淡紅色到紅色 ,分別代表從好到壞的漸變(1x過度繪制、2x過度繪制、3x過度繪制和超過4x過度繪制)。
界面上存在少量的淡紅色可以接受,但如果存在較多的大紅色就代表過度繪制有點(diǎn)嚴(yán)重了,這種時(shí)候,開發(fā)人員就要好好優(yōu)化一下自己寫的布局了。
主要用于開發(fā)人員調(diào)試布局,避免寫出的布局過度繪制了,優(yōu)化性能。
這里還有個選項(xiàng)很人性吶,顯示適合綠色弱視患者查看區(qū)域。贊一個。

  • 調(diào)試非矩形剪裁操作
截取自小米5s

選擇下面不同的裁剪操作,發(fā)現(xiàn)相冊里面照片->美化->調(diào)整這里裁剪下面這個選擇角度的區(qū)域顏色變化了,還有當(dāng)選擇以綠色突出顯示測試?yán)L制命令的時(shí)候,在桌面翻頁的時(shí)候,即將翻到的頁面應(yīng)用圖標(biāo)都是綠色的,不大能明白這個功能有啥用。

  • 強(qiáng)制啟用4x MSAA

4倍抗鋸齒,非游戲達(dá)人,對此不熟悉,哈哈。對畫質(zhì)有很大的提升,游戲畫面更為細(xì)膩和圓潤,適合經(jīng)常玩游戲的用戶,前提是你的GPU帶的動,不然耗電和發(fā)熱會增加,打王者榮耀的時(shí)候可以開啟噢

  • 停用HW疊加層

停用的話,所有應(yīng)用將共享視頻內(nèi)容,將不會經(jīng)常檢查碰撞與剪裁以顯示一個合適的圖像,將耗費(fèi)大量處理能力。而HW疊加層允許應(yīng)用有單獨(dú)的視頻內(nèi)存,性能要更好些,所以別停用就對了,穩(wěn)穩(wěn)的沒毛病。

  • 模擬顏色空間

針對一些特殊弱視或者色盲人群選用的顏色模擬,還挺人性的,不需要就不用設(shè)置了。

  • 關(guān)閉USB音頻轉(zhuǎn)接

關(guān)閉自動轉(zhuǎn)接至USB音頻外圍設(shè)備的功能。

  • 啟用嚴(yán)格模式

應(yīng)用程序在主線程上執(zhí)行長時(shí)間操作時(shí),屏幕閃爍!在打開某個應(yīng)用后,點(diǎn)返回退出但在進(jìn)程中仍然運(yùn)行,長時(shí)間后屏幕會閃爍提示應(yīng)用還在在主線程上運(yùn)行。

截取自小米5s
  • 顯示CPU使用情況

開啟后的顯示CPU使用情況,各類信息展現(xiàn)在旁邊。

截取自小米5s
  • GPU呈現(xiàn)模式分析
截取自小米5s

常用于Android性能分析的工具,GPU呈現(xiàn)模式用來測量app的幀速率,屬于GPU Profile工具的一種。在Android系統(tǒng)中是以每秒60幀為滿幀的,那么用1秒÷60幀,就能得出每幀為16毫秒(ms)時(shí)為滿幀的界限,每幀快于16ms即為流暢,而上圖綠線所標(biāo)示的高度即為16ms線,低于綠線即為流暢。

如上圖,可以看到一排柱狀圖在屏幕上,從左到右動態(tài)地顯示,每一個垂直的柱狀圖代表一幀的渲染,越長的垂直柱狀圖表示這一幀需要渲染的時(shí)間越長。隨著需要渲染的幀數(shù)越來越多,他們會堆積在一起,從而觀察到這段時(shí)間幀率的變化。

(GPU要繪制什么樣的視圖是需要CPU發(fā)出指令的,但CPU不會直接告訴GPU怎么做,而是會先將這一命令存入一個“盒子”,在盒子中會形成一個列表,然后GPU從盒子中取出命令進(jìn)行視圖的渲染繪制。)

紅色代表了“執(zhí)行時(shí)間”,它指的是Android渲染引擎執(zhí)行盒子中這些繪制命令的時(shí)間,假如當(dāng)前界面的視圖越多,那么紅色便會“跳”得越高。

黃色通常較短,它代表著CPU通知GPU“你已經(jīng)完成視圖渲染了”,不過在這里CPU會等待GPU的回話,當(dāng)GPU說“好的知道了”,才算完事兒。假如橙色部分很高的話,說明當(dāng)前GPU過于忙碌,有很多命令需要去處理。

藍(lán)色用于判斷流暢度的話,參考意義是較大的。藍(lán)色代表了視圖繪制所花費(fèi)的時(shí)間,表示視圖在界面發(fā)生變化(更新)的用時(shí)情況。當(dāng)它越短時(shí),即便是體驗(yàn)上更接近“絲滑”,當(dāng)他越長時(shí),說明當(dāng)前視圖較復(fù)雜或者無效需要重繪,即我們通常說的“卡了”。

一般情況下,當(dāng)藍(lán)色低于綠線時(shí)都不會出現(xiàn)卡頓,但是想要追求真正的絲般順滑那當(dāng)然還是三色全部處于綠線以下最為理想。

當(dāng)開發(fā)發(fā)現(xiàn)曲線出現(xiàn)異常時(shí),就該去做調(diào)整和優(yōu)化了,為用戶提供更好體驗(yàn)。

還有需要分析具體詳細(xì)的數(shù)據(jù)的時(shí)候,結(jié)合下面的命令來進(jìn)行:

$ adb shell dumpsys gfxinfo your_package

執(zhí)行該命令產(chǎn)生的日志中,你會發(fā)現(xiàn)一個標(biāo)題為: Profile data in ms. 這一節(jié)包含為每個窗口所屬應(yīng)用產(chǎn)生的3列表格。

截圖取自網(wǎng)絡(luò)
  • Draw 是消耗在構(gòu)建java顯示列表DisplayList的時(shí)間。說白了就是執(zhí)行每一個View的onDraw方法,創(chuàng)建或者更新每一個View的DisplayList對象的時(shí)間。
  • Process 是消耗在Android的2D渲染器執(zhí)行顯示列表的時(shí)間。你的視圖層次越多,要執(zhí)行的繪圖命令就越多。
  • Execute 是消耗在排列每個發(fā)送過來的幀的順序的時(shí)間,或者說是CPU告訴GPU渲染一幀的時(shí)間,這是一個阻塞調(diào)用,因?yàn)镃PU會一直等待GPU發(fā)出接到命令的回復(fù)。

關(guān)于Execute:如果執(zhí)行耗費(fèi)了過長的時(shí)間,這意味著你是跑在前面的圖形管線。Android在運(yùn)行時(shí)可以有3個緩沖區(qū),如果你需要另一個應(yīng)用程序?qū)⒆枞钡狡渲械囊粋€緩沖區(qū)釋放出來。兩個原因會發(fā)生這種情況。第一,你的應(yīng)用在Dalvik中快速繪制但在GPU顯示列表時(shí)候消耗了大量時(shí)間。第二,你的應(yīng)用程序花了很長的時(shí)間來執(zhí)行第幾幀,一旦管線滿了他將無法趕上,除非動畫完成。

  • 啟用OpenGL跟蹤

圖形視角效果器,是手機(jī)制作圖片軟件的輔助工具,比如ps3D立體圖,需要啟用這個工具才能實(shí)現(xiàn)再編輯過程中的圖片旋轉(zhuǎn),放大縮小復(fù)位等。

  • 不保留活動

用戶離開即銷毀每個活動,當(dāng)發(fā)生頁面跳轉(zhuǎn)時(shí),前一個Activity被立即銷毀,可用來模擬設(shè)備內(nèi)存不足時(shí)后臺Activity被銷毀的場景,若應(yīng)用做到開啟它時(shí)功能仍基本正常,說明代碼設(shè)計(jì)得比較合理,不同Activity之間的耦和很低,打開這個選項(xiàng)的時(shí)候,試了幾個應(yīng)用,都有奔潰現(xiàn)象。

  • 后臺進(jìn)程限制

自定義設(shè)置后臺程序的進(jìn)程限制。標(biāo)準(zhǔn)限制是系統(tǒng)自行決定,還有選項(xiàng)是限制一個或者二三四五個后臺運(yùn)行。

截取自小米5s
  • 系統(tǒng)內(nèi)存優(yōu)化級別

優(yōu)化系統(tǒng)內(nèi)存的設(shè)置,有各種級別可選,看各人不同情況選吧,開發(fā)測試或優(yōu)化應(yīng)用程序內(nèi)存情況的時(shí)候說不定也是用得著的。

  • 未啟動的應(yīng)用

點(diǎn)進(jìn)去有個列表展現(xiàn)當(dāng)前手機(jī)系統(tǒng)中未啟動的應(yīng)用。

  • 顯示所有“應(yīng)用程序無響應(yīng)”

用軟件卡死了跳出會提示說該“應(yīng)用無響應(yīng)是否關(guān)閉”的提示框。

  • 顯示“強(qiáng)制關(guān)閉”

當(dāng)app出現(xiàn)FC(強(qiáng)制關(guān)閉)錯誤時(shí),提示給用戶知曉。

  • 啟用MIUI優(yōu)化

小米提供的MIUI優(yōu)化,開啟就享受優(yōu)化效果。

啊哈~這是欠了很久的整理總結(jié)筆記了,人太懶了,現(xiàn)在也是心血來潮,終于搞定了,雖然還不完美,可督促自己還是完成了一件事,繼續(xù)加油吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容