Android UI優(yōu)化調(diào)試工具 Hierarchy Viewer 真機(jī)調(diào)試解決方法

概述:

? ? 本文主要是對(duì)Hierarchy Viewer如何進(jìn)行真機(jī)調(diào)試操作說(shuō)明呻顽,其中有自己總結(jié)的方法也他人的經(jīng)驗(yàn)河哑,一并在文中進(jìn)行歸納一下斑匪。

一、Hierarchy Viewer是什么盏浇?

通常應(yīng)用的不合理布局能夠拖慢應(yīng)用的運(yùn)行速度变丧,為了幫助debug布局的中存在問題,Android sdk 提供了Hierarchy Viewer工具绢掰。簡(jiǎn)單來(lái)說(shuō)锄贷,Hierarchy View就是為了方便調(diào)試和優(yōu)化應(yīng)用用戶界面译蒂,絕對(duì)是UI的檢視de 利器。

二谊却、Hierarchy Viewer如何使用

1.打開android studio的tools->Android->Android Device Monitor

2.然后打開 “Open Perspective”選擇 Hierachy View



更具體的使用調(diào)試方法即優(yōu)化選項(xiàng)就不在這里展開,請(qǐng)參考android 官方文檔:

Optimizing Your UI

Android UI 優(yōu)化——使用HierarchyViewer工具


三哑芹,如何在真機(jī)上正常使用Hierarchy View

? ?Hierarchy Viewer如果不進(jìn)行“特殊”配置的話是無(wú)法連接真機(jī)炎辨,會(huì)報(bào)以下錯(cuò)誤:


[hierarchyviewer]Unable?to?get?view?server?version?from?device?XXXXX

[hierarchyviewer]Unable?to?get?view?server?protocol?version?from?device?XXXXXX

[ViewServerDevice]Unable?to?debug?device:?XXXXX

[hierarchyviewer]Missing?forwarded?port?for?XXXXX

[hierarchyviewer]Unable?to?get?the?focused?window?from?device?XXXXX


無(wú)法連接真機(jī)的原因是:To preserve security, Hierarchy Viewer can only connect to devices running a developer version of the Android system.出于安全性考慮, Hierarchy Viewe 只能連接開發(fā)版手機(jī)或模擬器聪姿。

? ?Android源碼實(shí)現(xiàn)這一限制的地方在/frameworks/base/services/core/java/com/android/server/wm/WindowManageService.java:



檢驗(yàn)一臺(tái)手機(jī)/模擬器是否開啟了View Server的辦法是:


adb shell service call window 3

若返回值是:Result: Parcel(00000000 00000000 '........')" 說(shuō)明View Server處于關(guān)閉狀態(tài)

若返回值是:Result: Parcel(00000000 00000001 '........')" 說(shuō)明View Server處于開啟狀態(tài)


有時(shí)碰到模擬器或開發(fā)發(fā)版手機(jī)碴萧, view Hierarchy 還是無(wú)法連接,可以先使用以上方法檢查一下View Server狀態(tài)末购。如果沒有開啟破喻,則使用以下命名打開View Server:


adb shell service call window 1 i32 4939

也可以使用使用以下命令關(guān)閉View Server:

adb shell service call window 2 i32 4939


那么如何在真機(jī)能夠正常使用Hierarchy Viewer了?通過(guò)實(shí)踐目前總結(jié)了以下三種方法:

方法一盟榴。

1曹质,配置設(shè)備,打開手機(jī)的開發(fā)者選項(xiàng)

如果你的手機(jī)是android 4擎场。0 或者以下羽德,請(qǐng)根據(jù)開源項(xiàng)目 View ?Server(https://github.com/romainguy/ViewServer) 進(jìn)行安裝和配置

如果你的手機(jī)是4.1或以上,則必須進(jìn)行以下環(huán)境變量配置:

1.點(diǎn)擊 計(jì)算機(jī)屬性-》高級(jí)系統(tǒng)設(shè)置-》環(huán)境變量

2.新建環(huán)境變量ANDROID_HVPROTO迅办, 并設(shè)置其值為 ddm, 保存重啟

PS:該方法參考android 官方文檔《Device Setup for Hierachy Viewer》https://developer.android.com/studio/profile/hierarchy-viewer-setup.html

然而在本人親自試用真機(jī)(魅族MX4pro android 5.1 和 android 4.4的機(jī)頂盒)測(cè)試過(guò)程中宅静,配置環(huán)境變量的方法似乎并沒有起到作用,還是連不上站欺。

不過(guò)直接在調(diào)試app中集成View Server開源項(xiàng)目是沒有任何問題的姨夹。

方法二:

話說(shuō)前面Hierarchy Viewer只能連接Android開發(fā)版手機(jī)或是模擬器,只有ro.secure==0 && ro.debuggable==1的Android系統(tǒng)(這一句是其他網(wǎng)友的文章看到的矾策,沒有在android 官方查證到 )磷账。ro.xxxx這種句式大家是不是覺得有點(diǎn)熟悉?不就是android系統(tǒng)的 /system/build.prop文件中的配置樣式么蝴韭。推測(cè)如果將ro.secure==0 && ro.debuggable==1這個(gè)兩個(gè)配置添加進(jìn)來(lái)應(yīng)該能夠起作用吧够颠,于是進(jìn)行以下嘗試:

1.先把手機(jī)root

2.在進(jìn)到在/system/build.prop 中添加ro.secure==0? 和 ro.debuggable==1, 保存配置并重啟手機(jī)榄鉴,Hierarchy Viewer連接正常履磨,終于可以正常調(diào)試了。

方法三:

參照《如何在Root的手機(jī)上開啟ViewServer庆尘,使得HierachyViewer能夠連接》http://maider.blog.sohu.com/255448342.html剃诅。該方法本人沒有實(shí)踐過(guò),一看有18個(gè)步驟驶忌,

還涉及到 android逆向矛辕、smail,瞬間腦仁發(fā)緊笑跛,有興趣的同學(xué)可以自行嘗試一下。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末聊品,一起剝皮案震驚了整個(gè)濱河市飞蹂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翻屈,老刑警劉巖陈哑,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異伸眶,居然都是意外死亡惊窖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門厘贼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)界酒,“玉大人,你說(shuō)我怎么就攤上這事嘴秸』傩溃” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵赁遗,是天一觀的道長(zhǎng)署辉。 經(jīng)常有香客問我,道長(zhǎng)岩四,這世上最難降的妖魔是什么哭尝? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮剖煌,結(jié)果婚禮上材鹦,老公的妹妹穿的比我還像新娘。我一直安慰自己耕姊,他們只是感情好桶唐,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茉兰,像睡著了一般尤泽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上规脸,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天坯约,我揣著相機(jī)與錄音,去河邊找鬼莫鸭。 笑死闹丐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的被因。 我是一名探鬼主播卿拴,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼衫仑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了堕花?” 一聲冷哼從身側(cè)響起文狱,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎航徙,沒想到半個(gè)月后如贷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡到踏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尚猿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窝稿。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖凿掂,靈堂內(nèi)的尸體忽然破棺而出伴榔,到底是詐尸還是另有隱情,我是刑警寧澤庄萎,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布踪少,位于F島的核電站,受9級(jí)特大地震影響糠涛,放射性物質(zhì)發(fā)生泄漏援奢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一忍捡、第九天 我趴在偏房一處隱蔽的房頂上張望集漾。 院中可真熱鬧,春花似錦砸脊、人聲如沸具篇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)驱显。三九已至,卻和暖如春瞳抓,著一層夾襖步出監(jiān)牢的瞬間埃疫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工挨下, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留熔恢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓臭笆,卻偏偏與公主長(zhǎng)得像叙淌,于是被迫代替她去往敵國(guó)和親秤掌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容