溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android如何在root設(shè)備上開(kāi)啟ViewServer詳解

發(fā)布時(shí)間:2020-08-25 17:20:02 來(lái)源:腳本之家 閱讀:211 作者:為何是Hex的昵稱 欄目:移動(dòng)開(kāi)發(fā)

前言

關(guān)于什么是Hierarchy Viewer,請(qǐng)查看官方文檔:http://developer.android.com/tools/debugging/debugging-ui.html。

個(gè)人理解:Hierarchy Viewer能獲得當(dāng)前手機(jī)實(shí)時(shí)的UI信息,給界面設(shè)計(jì)人員和自動(dòng)化測(cè)試人員帶來(lái)極大的便利。

Hierarchy Viewer 工具提供了一個(gè)可視化界面顯示布局的層次結(jié)構(gòu),讓我們可以進(jìn)行調(diào)試,從而優(yōu)化界面布局結(jié)構(gòu),它需要手機(jī)開(kāi)啟 ViewServer 配合使用

但是在真機(jī)上并不能使用,Android的官方文檔中提到:出于安全考慮,Hierarchy Viewer只能連接Android開(kāi)發(fā)版手機(jī)或者模擬器

在代碼中是在 WindowManagerService.java 類中做的限制,如下

private static final String SYSTEM_SECURE = "ro.secure";
private static final String SYSTEM_DEBUGGABLE = "ro.debuggable";
public boolean startViewServer(int port) {
 if (isSystemSecure()) { // 判斷系統(tǒng)是否是安全的
  return false;
 }
 // ... 
 try {
  mViewServer = new ViewServer(this, port);
  return mViewServer.start();
 } catch (IOException e) {
  Slog.w(TAG_WM, "View server did not start");
 }
 return false;
}
private boolean isSystemSecure() {
 return "1".equals(SystemProperties.get(SYSTEM_SECURE, "1")) &&
   "0".equals(SystemProperties.get(SYSTEM_DEBUGGABLE, "0"));
}

可以看到,在 isSystemSecure() 函數(shù)中,判斷了 ro.secure 和 ro.debuggable 的值

所以我們的思路就是

使 SystemProperties.get(SYSTEM_SECURE, "1") 返回 0

或者 SystemProperties.get(SYSTEM_DEBUGGABLE, "0") 返回 1

即可達(dá)到目的

這兩個(gè)屬性被定義在 /default.prop 文件中,每次系統(tǒng)啟動(dòng)會(huì)被加載到內(nèi)存中,之前看過(guò)一些修改 system 的方法,不過(guò)需要刷機(jī),風(fēng)險(xiǎn)比較大,今天偶然返現(xiàn)一個(gè)工具 mprop

這個(gè)工具可以修改內(nèi)存中一些屬性的值,但是在手機(jī)重啟后需要重新修改,不過(guò)這都是小事

依照工具內(nèi)給定的步驟修改了 ro.debuggable 的值為 1 ,然后使用下面的命令

# 判斷手機(jī)是否開(kāi)啟了view server,如果沒(méi)開(kāi)啟則開(kāi)啟
adb shell service call window 3 
# 返回 Result: Parcel(00000000 00000001 '........') 開(kāi)啟
# 返回 Result: Parcel(00000000 00000000 '........') 關(guān)閉
# 開(kāi)啟 ViewServer
adb shell service call window 1 i32 4939
# 關(guān)閉 ViewServer
adb shell service call window 2 i32 4939

機(jī)型:一加2 氧OS 6.0.1 ,其他不同型號(hào)不同系統(tǒng)需自行測(cè)試,不保證成功

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI