首頁 收藏 QQ群
 網(wǎng)站導航

ZNDS智能電視網(wǎng) 推薦當貝市場

TV應用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動 | Z幣中心

新手入門 / 進階 / 社區(qū)互助

新手 | 你問我答 | 免費刷機救磚 | ROM固件

查看: 160691|回復: 15
上一主題 下一主題

安卓電視DIY精簡固件利器:ADB工具箱官方用戶指南,超詳細

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2021-7-1 10:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式 | 來自廣東
本帖最后由 Pretender. 于 2021-7-1 10:39 編輯

今天和大家一起深度學習一下安卓DIY利器:adb。
抖音搜索”拆修玩評“關(guān)注我看更多好玩的知識和教程,一起來玩唄!

————————————我是分割線———————————————
Android 調(diào)試橋 (adb) 是一種功能多樣的命令行工具,可讓您與設(shè)備進行通信。adb 命令可用于執(zhí)行各種設(shè)備操作(例如安裝和調(diào)試應用),并提供對 Unix shell(可用來在設(shè)備上運行各種命令)的訪問權(quán)限。它是一種客戶端-服務器程序,包括以下三個組件:
  • 客戶端:用于發(fā)送命令。客戶端在開發(fā)計算機上運行。您可以通過發(fā)出 adb 命令從命令行終端調(diào)用客戶端。
  • 守護程序 (adbd):用于在設(shè)備上運行命令。守護程序在每個設(shè)備上作為后臺進程運行。
  • 服務器:用于管理客戶端與守護程序之間的通信。服務器在開發(fā)機器上作為后臺進程運行。
adb 包含在 Android SDK 平臺工具軟件包中。您可以使用 [color=var(--devsite-link-color)]SDK 管理器下載此軟件包,該管理器會將其安裝在 android_sdk/platform-tools/ 下?;蛘撸绻枰毩⒌?Android SDK 平臺工具軟件包,也可以[color=var(--devsite-link-color)]點擊此處進行下載。
如需了解如何連接設(shè)備以使用 ADB,包括如何使用 Connection Assistant 對常見問題進行排查,請參閱[color=var(--devsite-link-color)]在硬件設(shè)備上運行應用。
adb 的工作原理
當您啟動某個 adb 客戶端時,該客戶端會先檢查是否有 adb 服務器進程正在運行。如果沒有,它會啟動服務器進程。服務器在啟動后會與本地 TCP 端口 5037 綁定,并監(jiān)聽 adb 客戶端發(fā)出的命令 - 所有 adb 客戶端均通過端口 5037 與 adb 服務器通信。
然后,服務器會與所有正在運行的設(shè)備建立連接。它通過掃描 5555 到 5585 之間(該范圍供前 16 個模擬器使用)的奇數(shù)號端口查找模擬器。服務器一旦發(fā)現(xiàn) adb 守護程序 (adbd),便會與相應的端口建立連接。請注意,每個模擬器都使用一對按順序排列的端口 - 用于控制臺連接的偶數(shù)號端口和用于 adb 連接的奇數(shù)號端口。例如:
模擬器 1,控制臺:5554
模擬器 1,adb:5555
模擬器 2,控制臺:5556
模擬器 2,adb:5557
依此類推
如上所示,在端口 5555 處與 adb 連接的模擬器與控制臺監(jiān)聽端口為 5554 的模擬器是同一個。
服務器與所有設(shè)備均建立連接后,您便可以使用 adb 命令訪問這些設(shè)備。由于服務器管理與設(shè)備的連接,并處理來自多個 adb 客戶端的命令,因此您可以從任意客戶端(或從某個腳本)控制任意設(shè)備。
在設(shè)備上啟用 adb 調(diào)試
如要在通過 USB 連接的設(shè)備上使用 adb,您必須在設(shè)備的系統(tǒng)設(shè)置中啟用 USB 調(diào)試(位于開發(fā)者選項下)。如需在通過 WLAN 連接的設(shè)備上使用 adb,請參閱[color=var(--devsite-link-color)]通過 WLAN 連接到設(shè)備。
在搭載 Android 4.2 及更高版本的設(shè)備上,“開發(fā)者選項”屏幕默認情況下處于隱藏狀態(tài)。如需將其顯示出來,請依次轉(zhuǎn)到設(shè)置 > 關(guān)于手機,然后點按版本號七次。返回上一屏幕,在底部可以找到開發(fā)者選項。
在某些設(shè)備上,“開發(fā)者選項”屏幕所在的位置或名稱可能有所不同。
現(xiàn)在,您已經(jīng)可以通過 USB 連接設(shè)備。您可以通過從 android_sdk/platform-tools/ 目錄執(zhí)行 adb devices 驗證設(shè)備是否已連接。如果已連接,您將看到設(shè)備名稱以“設(shè)備”形式列出。
[color=var(--devsite-note-notice-color)]注意:當您連接搭載 Android 4.2.2 或更高版本的設(shè)備時,系統(tǒng)會顯示一個對話框,詢問您是否接受允許通過此計算機進行調(diào)試的 RSA 密鑰。這種安全機制可以保護用戶設(shè)備,因為它可以確保只有在您能夠解鎖設(shè)備并確認對話框的情況下才能執(zhí)行 USB 調(diào)試和其他 adb 命令。
要詳細了解如何通過 USB 連接到設(shè)備,請參閱[color=var(--devsite-link-color)]在硬件設(shè)備上運行應用。
通過 Wi-Fi 連接到設(shè)備(Android 11 及更高版本)
Android 11 及更高版本支持使用 Android 調(diào)試橋 (adb) 從工作站以無線方式部署和調(diào)試應用。例如,您可以將可調(diào)試應用部署到多臺遠程設(shè)備,而無需通過 USB 實際連接設(shè)備。這樣就可以避免常見的 USB 連接問題,例如驅(qū)動程序安裝方面的問題。
如需使用無線調(diào)試,您需要使用配對碼將您的設(shè)備與工作站配對。您的工作站和設(shè)備必須連接到同一無線網(wǎng)絡(luò)。如需連接到您的設(shè)備,請按以下步驟操作:
圖 1. 無線 ADB 配對對話框。

  • 在您的工作站上,更新到最新版本的 [color=var(--devsite-link-color)]SDK 平臺工具。
  • 在設(shè)備上啟用[color=var(--devsite-link-color)]開發(fā)者選項。
  • 啟用無線調(diào)試選項。
  • 在詢問要允許在此網(wǎng)絡(luò)上進行無線調(diào)試嗎?的對話框中,點擊允許。
  • 選擇使用配對碼配對設(shè)備。記下設(shè)備上顯示的配對碼、IP 地址和端口號(參見圖片)。
  • 在工作站上,打開一個終端并導航到 android_sdk/platform-tools。
  • 運行 adb pair ipaddr:port。 使用第 5 步中的 IP 地址和端口號。
  • 當系統(tǒng)提示時,輸入您在第 5 步中獲得的配對碼。系統(tǒng)會顯示一條消息,表明您的設(shè)備已成功配對。    none    Enter pairing code: 482924    Successfully paired to 192.168.1.130:37099 [guid=adb-235XY]
  • (僅適用于 Linux 或 Microsoft Windows)運行 adb connect ipaddr:port。使用無線調(diào)試下的 IP 地址和端口。

    圖 2. 無線 adb IP 地址和端口號。
通過 WLAN 連接到設(shè)備(Android 10 及更低版本)
一般情況下,adb 通過 USB 與設(shè)備進行通信,但您也可以在以下情況下通過 WLAN 使用 adb:
  • 如需連接到搭載 Android 11(及更高版本)的設(shè)備,請參閱[color=var(--devsite-link-color)]在硬件設(shè)備上運行應用的“WLAN”部分。
  • 如要連接到搭載早期 Android 版本的設(shè)備,您必須通過 USB 執(zhí)行一些初始步驟。下文對這些步驟做了說明。
  • 如果您開發(fā)的是 Wear OS 應用,請參閱[color=var(--devsite-link-color)]調(diào)試 Wear OS 應用指南,其中提供了有關(guān)如何通過 WLAN 和藍牙使用 adb 的特別說明。
  • 將 Android 設(shè)備和 adb 主機連接到這兩者都可以訪問的同一 WLAN 網(wǎng)絡(luò)。請注意,并非所有接入點都適用;您可能需要使用防火墻已正確配置為支持 adb 的接入點。
  • 如果您要連接到 Wear OS 設(shè)備,請關(guān)閉手機上與該設(shè)備配對的藍牙。
  • 使用 USB 線將設(shè)備連接到主機。
  • 設(shè)置目標設(shè)備以監(jiān)聽端口 5555 上的 TCP/IP 連接。adb tcpip 5555
  • 拔掉連接目標設(shè)備的 USB 線。
  • 找到 Android 設(shè)備的 IP 地址。例如,對于 Nexus 設(shè)備,您可以在設(shè)置 > 關(guān)于平板電腦(或關(guān)于手機)> 狀態(tài) > IP 地址下找到 IP 地址?;蛘撸瑢τ?Wear OS 設(shè)備,您可以在設(shè)置 > WLAN 設(shè)置 > 高級 > IP 地址下找到 IP 地址。
  • 通過 IP 地址連接到設(shè)備。adb connect device_ip_address
  • 確認主機已連接到目標設(shè)備:$ adb devicesList of devices attacheddevice_ip_address:5555 device
現(xiàn)在,您可以開始操作了!
如果 adb 連接斷開:
  • 確保主機仍與 Android 設(shè)備連接到同一個 WLAN 網(wǎng)絡(luò)。
  • 通過再次執(zhí)行 adb connect 步驟重新連接。
  • 如果上述操作未解決問題,重置 adb 主機:adb kill-server
    然后,從頭開始操作。

查詢設(shè)備
在發(fā)出 adb 命令之前,了解哪些設(shè)備實例已連接到 adb 服務器會很有幫助。您可以使用 devices 命令生成已連接設(shè)備的列表。
  adb devices -l  
作為回應,adb 會針對每個設(shè)備輸出以下狀態(tài)信息:
  • 序列號:由 adb 創(chuàng)建的字符串,用于通過端口號唯一標識設(shè)備。 下面是一個序列號示例:emulator-5554
  • 狀態(tài):設(shè)備的連接狀態(tài)可以是以下幾項之一:
    • offline:設(shè)備未連接到 adb 或沒有響應。
    • device:設(shè)備現(xiàn)已連接到 adb 服務器。請注意,此狀態(tài)并不表示 Android 系統(tǒng)已完全啟動并可正常運行,因為在設(shè)備連接到 adb 時系統(tǒng)仍在啟動。不過,在啟動后,這將是設(shè)備的正常運行狀態(tài)。
    • no device:未連接任何設(shè)備。
  • 說明:如果您包含 -l 選項,devices 命令會告知您設(shè)備是什么。當您連接了多個設(shè)備時,此信息很有用,可幫助您將它們區(qū)分開來。
以下示例展示了 devices 命令及其輸出。有三個設(shè)備正在運行。列表中的前兩行表示模擬器,第三行表示連接到計算機的硬件設(shè)備。
$ adb devicesList of devices attachedemulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x860a388e93      device usb:1-1 product:razor model:Nexus_7 device:flo模擬器未列出
adb devices 命令的極端命令序列會導致正在運行的模擬器不顯示在 adb devices 輸出中(即使在您的桌面上可以看到該模擬器)。當滿足以下所有條件時,就會發(fā)生這種情況:
  • adb 服務器未在運行,
  • 您在使用 emulator 命令時,將 -port 或 -ports 選項的端口值設(shè)為 5554 到 5584 之間的奇數(shù),
  • 您選擇的奇數(shù)號端口處于空閑狀態(tài),因此可以與指定端口號的端口建立連接,或者該端口處于忙碌狀態(tài),模擬器切換到了符合第 2 條中要求的另一個端口,以及
  • 啟動模擬器后才啟動 adb 服務器。
避免出現(xiàn)這種情況的一種方法是讓模擬器自行選擇端口,并且每次運行的模擬器數(shù)量不要超過 16 個。另一種方法是始終先啟動 adb 服務器,然后再使用 emulator 命令,如下例所示。
示例 1:在下面的命令序列中,adb devices 命令啟動了 adb 服務器,但是設(shè)備列表未顯示。
停止 adb 服務器,然后按照所示順序輸入以下命令。對于 avd 名稱,請?zhí)峁┫到y(tǒng)中有效的 avd 名稱。如需獲取 avd 名稱列表,請輸入 emulator -list-avds。 emulator 命令位于 android_sdk/tools 目錄下。
$ adb kill-server$ emulator -avd Nexus_6_API_25 -port 5555$ adb devicesList of devices attached* daemon not running. starting it now on port 5037 ** daemon started successfully *
示例 2:在下面的命令序列中,adb devices 顯示了設(shè)備列表,因為先啟動了 adb 服務器。
如果想在 adb devices 輸出中看到模擬器,請停止 adb 服務器,然后在使用 emulator 命令之后、使用 adb devices 命令之前,重新啟動該服務器,如下所示:
$ adb kill-server$ emulator -avd Nexus_6_API_25 -port 5557$ adb start-server$ adb devicesList of devices attachedemulator-5557 device
如需詳細了解模擬器命令行選項,請參閱[color=var(--devsite-link-color)]使用命令行參數(shù)。
將命令發(fā)送至特定設(shè)備
如果有多個設(shè)備在運行,您在發(fā)出 adb 命令時必須指定目標設(shè)備。為此,請使用 devices 命令獲取目標設(shè)備的序列號。獲得序列號后,請結(jié)合使用 -s 選項與 adb 命令來指定序列號。如果您要發(fā)出很多 adb 命令,可以將 $ANDROID_SERIAL 環(huán)境變量設(shè)為包含序列號。如果您同時使用 -s 和 $ANDROID_SERIAL,-s 會替換 $ANDROID_SERIAL。
在以下示例中,先獲得了已連接設(shè)備的列表,然后使用其中一個設(shè)備的序列號在該設(shè)備上安裝了 helloWorld.apk。
$ adb devicesList of devices attachedemulator-5554 deviceemulator-5555 device$ adb -s emulator-5555 install helloWorld.apk
[color=var(--devsite-note-notice-color)]注意:如果您在多個設(shè)備可用時發(fā)出命令但未指定目標設(shè)備,adb 會生成錯誤。
如果有多個可用設(shè)備,但只有一個是模擬器,請使用 -e 選項將命令發(fā)送至該模擬器。同樣,如果有多個設(shè)備,但只連接了一個硬件設(shè)備,請使用 -d 選項將命令發(fā)送至該硬件設(shè)備。
安裝應用
您可以使用 adb 的 install 命令在模擬器或連接的設(shè)備上安裝 APK:
adb install path_to_apk
安裝測試 APK 時,必須在 install 命令中使用 -t 選項。如需了解詳情,請參閱 [color=var(--devsite-link-color)]-t。
要詳細了解如何創(chuàng)建可安裝在模擬器/設(shè)備實例上的 APK 文件,請參閱[color=var(--devsite-link-color)]構(gòu)建和運行應用。
請注意,如果您使用的是 Android Studio,則無需直接使用 adb 在模擬器/設(shè)備上安裝您的應用。Android Studio 會為您執(zhí)行應用的打包和安裝操作。
設(shè)置端口轉(zhuǎn)發(fā)
您可以使用 forward 命令設(shè)置任意端口轉(zhuǎn)發(fā),將特定主機端口上的請求轉(zhuǎn)發(fā)到設(shè)備上的其他端口。以下示例設(shè)置了主機端口 6100 到設(shè)備端口 7100 的轉(zhuǎn)發(fā):
adb forward tcp:6100 tcp:7100
以下示例設(shè)置了主機端口 6100 到 local:logd 的轉(zhuǎn)發(fā):
adb forward tcp:6100 local:logd將文件復制到設(shè)備/從設(shè)備復制文件
您可以使用 pull 和 push 命令將文件復制到設(shè)備或從設(shè)備復制文件。與 install 命令(僅將 APK 文件復制到特定位置)不同,使用 pull 和 push 命令可將任意目錄和文件復制到設(shè)備中的任何位置。
如需從設(shè)備中復制某個文件或目錄(及其子目錄),請使用以下命令:
adb pull remote local
如需將某個文件或目錄(及其子目錄)復制到設(shè)備,請使用以下命令:
adb push local remote
將 local 和 remote 替換為開發(fā)機器(本地)和設(shè)備(遠程)上的目標文件/目錄的路徑。例如:
adb push foo.txt /sdcard/foo.txt停止 adb 服務器
在某些情況下,您可能需要終止 adb 服務器進程,然后重啟以解決問題(例如,如果 adb 不響應命令)。
如需停止 adb 服務器,請使用 adb kill-server 命令。然后,您可以通過發(fā)出其他任何 adb 命令來重啟服務器。
發(fā)出 adb 命令
您可以從開發(fā)機器上的命令行發(fā)出 adb 命令,也可以通過腳本發(fā)出。用法如下:
adb [-d | -e | -s serial_number] command
如果只有一個模擬器在運行或者只連接了一個設(shè)備,系統(tǒng)會默認將 adb 命令發(fā)送至該設(shè)備。如果有多個模擬器正在運行并且/或者連接了多個設(shè)備,您需要使用 -d、-e 或 -s 選項指定應向其發(fā)送命令的目標設(shè)備。
您可以使用以下命令來查看所有支持的 adb 命令的詳細列表:
adb --help發(fā)出 shell 命令
您可以使用 shell 命令通過 adb 發(fā)出設(shè)備命令,也可以啟動交互式 shell。如需發(fā)出單個命令,請使用 shell 命令,如下所示:
adb [-d |-e | -s serial_number] shell shell_command
要在設(shè)備上啟動交互式 shell,請使用 shell 命令,如下所示:
adb [-d | -e | -s serial_number] shell
要退出交互式 shell,請按 Ctrl + D 鍵或輸入 exit。
[color=var(--devsite-note-notice-color)]注意:在 Android 平臺工具 23 及更高版本中,adb 處理參數(shù)的方式與 ssh(1) 命令相同。這項變更解決了很多[color=var(--devsite-note-notice-color)]命令注入方面的問題,還使安全執(zhí)行包含 shell [color=var(--devsite-note-notice-color)]元字符的命令(如 adb install Let\'sGo.apk)成為可能。不過,這項變更還意味著,對包含 shell 元字符的所有命令的解釋也發(fā)生了變化。例如,adb shell setprop foo 'a b' 命令現(xiàn)在會返回錯誤,因為單引號 (') 會被本地 shell 消去,設(shè)備看到的是 adb shell setprop foo a b。如需使該命令正常運行,請引用兩次,一次用于本地 shell,另一次用于遠程 shell,與處理 ssh(1) 的方法相同。例如,adb shell setprop foo "'a b'"。
Android 提供了大多數(shù)常見的 Unix 命令行工具。如需查看可用工具的列表,請使用以下命令:
adb shell ls /system/bin
對于大多數(shù)命令,都可通過 --help 參數(shù)獲得命令幫助。許多 shell 命令都由 [color=var(--devsite-link-color)]toybox 提供。對于所有 toybox 命令,都可通過 toybox --help 可獲得命令的常規(guī)幫助。
另請參閱 [color=var(--devsite-link-color)]Logcat 命令行工具,該工具對監(jiān)控系統(tǒng)日志很有用。
調(diào)用 Activity 管理器 (am)
在 adb shell 中,您可以使用 Activity 管理器 (am) 工具發(fā)出命令以執(zhí)行各種系統(tǒng)操作,如啟動 Activity、強行停止進程、廣播 intent、修改設(shè)備屏幕屬性,等等。在 shell 中,相應的語法為:
am command
您也可以直接從 adb 發(fā)出 Activity 管理器命令,無需進入遠程 shell。例如:
adb shell am start -a android.intent.action.VIEW
表 2. 可用的 Activity 管理器命令
命令
說明
start [options] intent啟動由 intent 指定的 [color=var(--devsite-link-color)]Activity。
請參閱 [color=var(--devsite-link-color)]intent 參數(shù)的規(guī)范。
具體選項包括:
  • -D:啟用調(diào)試功能。
  • -W:等待啟動完成。
  • --start-profiler file:啟動性能剖析器并將結(jié)果發(fā)送至 file。
  • -P file:類似于 --start-profiler,但當應用進入空閑狀態(tài)時剖析停止。
  • -R count:重復啟動 Activity count 次。在每次重復前,將完成頂層 Activity。
  • -S:在啟動 Activity 前,強行停止目標應用。
  • --opengl-trace:啟用 OpenGL 函數(shù)的跟蹤。
  • --user user_id | current:指定要作為哪個用戶運行;如果未指定,則作為當前用戶運行。
startservice [options] intent啟動由 intent 指定的 [color=var(--devsite-link-color)]Service。
請參閱 [color=var(--devsite-link-color)]intent 參數(shù)的規(guī)范。
具體選項包括:
  • --user user_id | current:指定要作為哪個用戶運行;如果未指定,則作為當前用戶運行。
force-stop package強行停止與 package(應用的軟件包名稱)關(guān)聯(lián)的所有進程。
kill [options] package終止與 package(應用的軟件包名稱)關(guān)聯(lián)的所有進程。此命令僅終止可安全終止且不會影響用戶體驗的進程。
具體選項包括:
  • --user user_id | all | current:指定要終止哪個用戶的進程;如果未指定,則終止所有用戶的進程。
kill-all終止所有后臺進程。
broadcast [options] intent發(fā)出廣播 intent。
請參閱 [color=var(--devsite-link-color)]intent 參數(shù)的規(guī)范。
具體選項包括:
  • [--user user_id | all | current]:指定要發(fā)送給哪個用戶;如果未指定,則發(fā)送給所有用戶。
instrument [options] component使用 [color=var(--devsite-link-color)]Instrumentation 實例啟動監(jiān)控。通常情況下,目標 component 采用 test_package/runner_class 格式。
具體選項包括:
  • -r:輸出原始結(jié)果(否則,對 report_key_streamresult 進行解碼)。與 [-e perf true] 結(jié)合使用可生成性能測量的原始輸出。
  • -e name value:將參數(shù) name 設(shè)為 value。 對于測試運行程序,通用格式為 -e testrunner_flag value[,value...]。
  • -p file:將剖析數(shù)據(jù)寫入 file。
  • -w:等待插樁完成后再返回。測試運行程序需要使用此選項。
  • --no-window-animation:運行時關(guān)閉窗口動畫。
  • --user user_id | current:指定以哪個用戶身份運行插樁;如果未指定,則以當前用戶身份運行。
profile start process file啟動 process 的性能剖析器,將結(jié)果寫入 file。
profile stop process停止 process 的性能剖析器。
dumpheap [options] process file轉(zhuǎn)儲 process 的堆,寫入 file。
具體選項包括:
  • --user [user_id | current]:提供進程名稱時,指定要轉(zhuǎn)儲的進程的用戶;如果未指定,則使用當前用戶。
  • -n:轉(zhuǎn)儲原生堆,而非托管堆。
set-debug-app [options] package設(shè)置要調(diào)試的應用 package。
具體選項包括:
  • -w:應用啟動時等待調(diào)試程序。
  • --persistent:保留此值。
clear-debug-app清除之前使用 set-debug-app 設(shè)置的待調(diào)試軟件包。
monitor [options]開始監(jiān)控崩潰或 ANR。
具體選項包括:
  • --gdb:在崩潰/ANR 時,在給定的端口上啟動 gdbserv。
screen-compat {on | off}package控制 package 的[color=var(--devsite-link-color)]屏幕兼容性模式。
display-size [reset |widthxheight]替換設(shè)備顯示尺寸。此命令支持使用大屏設(shè)備模仿小屏幕分辨率(反之亦然),對于在不同尺寸的屏幕上測試應用非常有用。
示例:
am display-size 1280x800
display-density dpi替換設(shè)備顯示密度。此命令支持使用低密度屏幕在高密度屏幕環(huán)境上進行測試(反之亦然),對于在不同密度的屏幕上測試應用非常有用。
示例:
am display-density 480
to-uri intent以 URI 的形式輸出給定的 intent 規(guī)范。
請參閱 [color=var(--devsite-link-color)]intent 參數(shù)的規(guī)范。
to-intent-uri intent以 intent: URI 的形式輸出給定的 intent 規(guī)范。
請參閱 [color=var(--devsite-link-color)]intent 參數(shù)的規(guī)范。

intent 參數(shù)的規(guī)范
對于采用 intent 參數(shù)的 Activity 管理器命令,您可以使用以下選項指定 intent:
[color=var(--devsite-link-color)]全部顯示
調(diào)用軟件包管理器 (pm)
在 adb shell 中,您可以使用軟件包管理器 (pm) 工具發(fā)出命令,以對設(shè)備上安裝的應用軟件包執(zhí)行操作和查詢。在 shell 中,相應的語法為:
pm command
您也可以直接從 adb 發(fā)出軟件包管理器命令,無需進入遠程 shell。例如:
adb shell pm uninstall com.example.MyApp
表 3. 可用的軟件包管理器命令。
命令
說明
list packages [options] filter輸出所有軟件包,或者,僅輸出軟件包名稱包含 filter 中的文本的軟件包。
具體選項:
  • -f:查看它們的關(guān)聯(lián)文件。
  • -d:進行過濾以僅顯示已停用的軟件包。
  • -e:進行過濾以僅顯示已啟用的軟件包。
  • -s:進行過濾以僅顯示系統(tǒng)軟件包。
  • -3:進行過濾以僅顯示第三方軟件包。
  • -i:查看軟件包的安裝程序。
  • -u:也包括已卸載的軟件包。
  • --user user_id:要查詢的用戶空間。
list permission-groups輸出所有已知的權(quán)限組。
list permissions [options] group輸出所有已知的權(quán)限,或者,僅輸出 group 中的權(quán)限。
具體選項:
  • -g:按組進行整理。
  • -f:輸出所有信息。
  • -s:簡短摘要。
  • -d:僅列出危險權(quán)限。
  • -u:僅列出用戶將看到的權(quán)限。
list instrumentation [options]列出所有測試軟件包。
具體選項:
  • -f:列出測試軟件包的 APK 文件。
  • target_package:僅列出此應用的測試軟件包。
list features輸出系統(tǒng)的所有功能。
list libraries輸出當前設(shè)備支持的所有庫。
list users輸出系統(tǒng)中的所有用戶。
path package輸出給定 package 的 APK 的路徑。
install [options] path將軟件包(通過 path 指定)安裝到系統(tǒng)。
具體選項:
  • -r:重新安裝現(xiàn)有應用,并保留其數(shù)據(jù)。
  • -t:允許安裝測試 APK。僅當您運行或調(diào)試了應用或者使用了 Android Studio 的 Build > Build APK 命令時,Gradle 才會生成測試 APK。如果是使用開發(fā)者預覽版 SDK(如果 targetSdkVersion 是字母,而非數(shù)字)構(gòu)建的 APK,那么安裝測試 APK 時必須在 install 命令中包含 [color=var(--devsite-link-color)]-t 選項。
  • -i installer_package_name:指定安裝程序軟件包名稱。
  • --install-location location:使用以下某個值設(shè)置安裝位置:
    • 0:使用默認安裝位置。
    • 1:在內(nèi)部設(shè)備存儲上安裝。
    • 2:在外部介質(zhì)上安裝。
  • -f:在內(nèi)部系統(tǒng)內(nèi)存上安裝軟件包。
  • -d:允許版本代碼降級。
  • -g:授予應用清單中列出的所有權(quán)限。
  • --fastdeploy:通過僅更新已更改的 APK 部分來快速更新安裝的軟件包。
  • --incremental:僅安裝 APK 中啟動應用所需的部分,同時在后臺流式傳輸剩余數(shù)據(jù)。如要使用此功能,您必須為 APK 簽名,創(chuàng)建一個 [color=var(--devsite-link-color)]APK 簽名方案 v4 文件,并將此文件放在 APK 所在的目錄中。只有部分設(shè)備支持此功能。此選項會強制 adb 使用該功能,如果該功能不受支持,則會失?。ú⑻峁┯嘘P(guān)失敗原因的詳細信息)。附加 --wait 選項,可等到 APK 完全安裝完畢后再授予對 APK 的訪問權(quán)限。
    --no-incremental 可阻止 adb 使用此功能。

uninstall [options] package從系統(tǒng)中移除軟件包。
具體選項:
  • -k:移除軟件包后保留數(shù)據(jù)和緩存目錄。
clear package刪除與軟件包關(guān)聯(lián)的所有數(shù)據(jù)。
enable package_or_component啟用給定的軟件包或組件(寫為“package/class”)。
disable package_or_component停用給定的軟件包或組件(寫為“package/class”)。
disable-user [options] package_or_component
具體選項:
  • --user user_id:要停用的用戶。
grant package_name permission向應用授予權(quán)限。在搭載 Android 6.0(API 級別 23)及更高版本的設(shè)備上,該權(quán)限可以是應用清單中聲明的任何權(quán)限。在搭載 Android 5.1(API 級別 22)及更低版本的設(shè)備上,該權(quán)限必須是應用定義的可選權(quán)限。
revoke package_name permission從應用撤消權(quán)限。在搭載 Android 6.0(API 級別 23)及更高版本的設(shè)備上,該權(quán)限可以是應用清單中聲明的任何權(quán)限。在搭載 Android 5.1(API 級別 22)及更低版本的設(shè)備上,該權(quán)限必須是應用定義的可選權(quán)限。
set-install-location location更改默認安裝位置。位置值如下:
  • 0:自動:讓系統(tǒng)決定最合適的位置。
  • 1:內(nèi)部:在內(nèi)部設(shè)備存儲上安裝。
  • 2:外部:在外部介質(zhì)上安裝。
[color=var(--devsite-note-notice-color)]注意:此命令僅用于調(diào)試目的;使用此命令可能會導致應用中斷和其他意外行為。
get-install-location返回當前安裝位置。返回值如下:
  • 0 [auto]:讓系統(tǒng)決定最合適的位置
  • 1 [internal]:在內(nèi)部設(shè)備存儲上安裝
  • 2 [external]:在外部介質(zhì)上安裝
set-permission-enforced permission [true | false]指定是否應強制執(zhí)行指定權(quán)限。
trim-caches desired_free_space減少緩存文件以達到給定的可用空間。
create-user user_name創(chuàng)建具有給定 user_name 的新用戶,從而輸出該用戶的新用戶標識符。
remove-user user_id移除具有給定 user_id 的用戶,從而刪除與該用戶關(guān)聯(lián)的所有數(shù)據(jù)。
get-max-users輸出設(shè)備支持的最大用戶數(shù)。

調(diào)用設(shè)備政策管理器 (dpm)
為便于您開發(fā)和測試設(shè)備管理(或其他企業(yè))應用,您可以向設(shè)備政策管理器 (dpm) 工具發(fā)出命令。使用該工具可控制活動管理應用,或更改設(shè)備上的政策狀態(tài)數(shù)據(jù)。在 shell 中,語法如下:
dpm command
您也可以直接從 adb 發(fā)出設(shè)備政策管理器命令,無需進入遠程 shell:
adb shell dpm command
表 4. 可用的設(shè)備政策管理器命令
命令
說明
set-active-admin [options] component將 component 設(shè)為活動管理。
具體選項包括:
  • --user user_id:指定目標用戶。您也可以傳遞 --user current以選擇當前用戶。
set-profile-owner [options] component將 component 設(shè)為活動管理,并將其軟件包設(shè)為現(xiàn)有用戶的個人資料所有者。
具體選項包括:
  • --user user_id:指定目標用戶。您也可以傳遞 --user current以選擇當前用戶。
  • --name name:指定簡單易懂的組織名稱。
set-device-owner [options] component將 component 設(shè)為活動管理,并將其軟件包設(shè)為設(shè)備所有者。
具體選項包括:
  • --user user_id:指定目標用戶。您也可以傳遞 --user current以選擇當前用戶。
  • --name name:指定簡單易懂的組織名稱。
remove-active-admin [options] component停用活動管理。應用必須在清單中聲明 [color=var(--devsite-link-color)]android:testOnly。此命令還會移除設(shè)備所有者和個人資料所有者。
具體選項包括:
  • --user user_id:指定目標用戶。您也可以傳遞 --user current以選擇當前用戶。
clear-freeze-period-record清除設(shè)備之前設(shè)置的系統(tǒng) OTA 更新凍結(jié)期記錄。在開發(fā)管理凍結(jié)期的應用時,這有助于避免設(shè)備存在調(diào)度方面的限制。請參閱[color=var(--devsite-link-color)]管理系統(tǒng)更新。
在搭載 Android 9.0(API 級別 28)及更高版本的設(shè)備上受支持。
force-network-logs強制系統(tǒng)讓任何現(xiàn)有網(wǎng)絡(luò)日志隨時可供 DPC 檢索。如果有可用的連接或 DNS 日志,DPC 會收到 [color=var(--devsite-link-color)]onNetworkLogsAvailable() 回調(diào)。請參閱[color=var(--devsite-link-color)]網(wǎng)絡(luò)活動日志。
此命令有調(diào)用頻率限制。在搭載 Android 9.0(API 級別 28)及更高版本的設(shè)備上受支持。
force-security-logs強制系統(tǒng)向 DPC 提供任何現(xiàn)有安全日志。如果有可用的日志,DPC 會收到 [color=var(--devsite-link-color)]onSecurityLogsAvailable() 回調(diào)。請參閱[color=var(--devsite-link-color)]記錄企業(yè)設(shè)備活動。
此命令有調(diào)用頻率限制。在搭載 Android 9.0(API 級別 28)及更高版本的設(shè)備上受支持。

截取屏幕截圖
screencap 命令是一個用于對設(shè)備顯示屏截取屏幕截圖的 shell 實用程序。在 shell 中,語法如下:
screencap filename
如需從命令行使用 screencap,請輸入以下命令:
adb shell screencap /sdcard/screen.png
以下屏幕截圖會話示例展示了如何使用 adb shell 截取屏幕截圖,以及如何使用 pull 命令從設(shè)備下載屏幕截圖文件:

$ adb shellshell@ $ screencap /sdcard/screen.pngshell@ $ exit$ adb pull /sdcard/screen.png錄制視頻
screenrecord 命令是一個用于錄制設(shè)備(搭載 Android 4.4(API 級別 19)及更高版本)顯示屏的 shell 實用程序。該實用程序?qū)⑵聊?Activity 錄制為 MPEG-4 文件。您可以使用此文件創(chuàng)建宣傳視頻或培訓視頻,或?qū)⑵溆糜谡{(diào)試或測試。
在 shell 中,使用以下語法:
screenrecord [options] filename
如需從命令行使用 screenrecord,請輸入以下命令:
adb shell screenrecord /sdcard/demo.mp4
按 Ctrl + C 鍵(在 Mac 上,按 Command + C 鍵)可停止屏幕錄制;如果不手動停止,到三分鐘或 --time-limit 設(shè)置的時間限制時,錄制將會自動停止。
如需開始錄制設(shè)備屏幕,請運行 screenrecord 命令以錄制視頻。然后,運行 pull 命令以將視頻從設(shè)備下載到主機。下面是一個錄制會話示例:

$ adb shellshell@ $ screenrecord --verbose /sdcard/demo.mp4(press Control + C to stop)shell@ $ exit$ adb pull /sdcard/demo.mp4
screenrecord 實用程序能以您要求的任何支持的分辨率和比特率進行錄制,同時保持設(shè)備顯示屏的寬高比。默認情況下,該實用程序以本機顯示分辨率和屏幕方向進行錄制,時長不超過三分鐘。
screenrecord 實用程序的局限性:
  • 音頻不與視頻文件一起錄制。
  • 無法在搭載 Wear OS 的設(shè)備上錄制視頻。
  • 某些設(shè)備可能無法以它們的本機顯示分辨率進行錄制。如果在錄制屏幕時出現(xiàn)問題,請嘗試使用較低的屏幕分辨率。
  • 不支持在錄制時旋轉(zhuǎn)屏幕。如果在錄制期間屏幕發(fā)生了旋轉(zhuǎn),則部分屏幕內(nèi)容在錄制時將被切斷。
表 5. screenrecord 選項
選項
說明
--help顯示命令語法和選項
--size widthxheight設(shè)置視頻大?。?280x720。默認值為設(shè)備的本機顯示屏分辨率(如果支持);如果不支持,則為 1280x720。為獲得最佳效果,請使用設(shè)備的 Advanced Video Coding (AVC) 編碼器支持的大小。
--bit-rate rate設(shè)置視頻的視頻比特率(以 MB/秒為單位)。默認值為 4Mbps。您可以增加比特率以提升視頻品質(zhì),但這樣做會導致視頻文件變大。下面的示例將錄制比特率設(shè)為 6Mbps:screenrecord --bit-rate 6000000 /sdcard/demo.mp4
--time-limit time設(shè)置最大錄制時長(以秒為單位)。默認值和最大值均為 180(3 分鐘)。
--rotate將輸出旋轉(zhuǎn) 90 度。此功能處于實驗階段。
--verbose在命令行屏幕顯示日志信息。如果您不設(shè)置此選項,則該實用程序在運行時不會顯示任何信息。

讀取應用的 ART 配置文件
從 Android 7.0(API 級別 24)開始,Android Runtime (ART) 會收集已安裝應用的執(zhí)行配置文件,這些配置文件用于優(yōu)化應用性能。您可能需要檢查收集的配置文件,以了解在應用啟動期間,系統(tǒng)頻繁執(zhí)行了哪些方法和使用了哪些類。
要生成文本格式的配置文件信息,請使用以下命令:
adb shell cmd package dump-profiles package
要檢索生成的文件,請使用:
adb pull /data/misc/profman/package.txt重置測試設(shè)備
如果您在多個測試設(shè)備上測試應用,則在兩次測試之間重置設(shè)備可能很有用,例如,可以移除用戶數(shù)據(jù)并重置測試環(huán)境。您可以使用 testharness adb shell 命令對搭載 Android 10(API 級別 29)或更高版本的測試設(shè)備執(zhí)行恢復出廠設(shè)置,如下所示。
adb shell cmd testharness enable
使用 testharness 恢復設(shè)備時,設(shè)備會自動將允許通過當前工作站調(diào)試設(shè)備的 RSA 密鑰備份在一個持久性位置。也就是說,在重置設(shè)備后,工作站可以繼續(xù)調(diào)試設(shè)備并向設(shè)備發(fā)出 adb 命令,而無需手動注冊新密鑰。
此外,為了幫助您更輕松且更安全地繼續(xù)測試您的應用,使用 testharness 恢復設(shè)備還會更改以下設(shè)備設(shè)置:
  • 設(shè)備會設(shè)置某些系統(tǒng)設(shè)置,以便不會出現(xiàn)初始設(shè)備設(shè)置向?qū)?。也就是說,設(shè)備會進入一種狀態(tài),供您快速安裝、調(diào)試和測試您的應用。
  • 設(shè)置:
    • 停用鎖定屏幕
    • 停用緊急提醒
    • 停用帳戶自動同步
    • 停用自動系統(tǒng)更新
  • 其他:
    • 停用預裝的安全應用

如果您的應用需要檢測并適應 testharness 命令的默認設(shè)置,您可以使用 [color=var(--devsite-link-color)]ActivityManager.isRunningInUserTestHarness()。
sqlite
sqlite3 可啟動用于檢查 sqlite 數(shù)據(jù)庫的 sqlite 命令行程序。它包含用于輸出表格內(nèi)容的 .dump 以及用于輸出現(xiàn)有表格的 SQL CREATE 語句的 .schema 等命令。您也可以從命令行執(zhí)行 SQLite 命令,如下所示。
$ adb -s emulator-5554 shell$ sqlite3 /data/data/com.example.app/databases/rssitems.dbSQLite version 3.3.12Enter ".help" for instructions

抖音搜索”拆修玩評“關(guān)注我看更多好玩的知識和教程,一起來玩唄!


上一篇:ADB工具命令中文詳解(附ADB工具箱最新版1.0.41)
下一篇:mstar-bin-tool-master使用教程,MStar固件解包封包(附下載地址)
沙發(fā)
發(fā)表于 2021-7-1 10:40 | 只看該作者 | 來自廣東
感謝分享
回復 支持 反對

使用道具 舉報

板凳
發(fā)表于 2021-7-1 10:40 | 只看該作者 | 來自廣東
不明覺厲,幫忙頂頂
回復 支持 反對

使用道具 舉報

地板
發(fā)表于 2021-7-8 01:13 | 只看該作者 | 來自云南
這個比較全面了,謝謝樓主
回復 支持 反對

使用道具 舉報

5#
發(fā)表于 2022-2-13 16:35 來自ZNDS手機版 | 只看該作者 | 來自河南
太難了
回復 支持 反對

使用道具 舉報

6#
發(fā)表于 2022-4-4 06:41 來自ZNDS手機版 | 只看該作者 | 來自湖南
怎么
回復 支持 反對

使用道具 舉報

7#
發(fā)表于 2022-4-30 07:56 | 只看該作者 | 來自河南
我暈
回復 支持 反對

使用道具 舉報

8#
發(fā)表于 2022-6-21 23:39 | 只看該作者 | 來自甘肅
66666666666
回復 支持 反對

使用道具 舉報

9#
發(fā)表于 2023-2-6 01:09 | 只看該作者 | 來自河南
#在這里快速回復#拆修玩評
回復 支持 反對

使用道具 舉報

10#
發(fā)表于 2023-2-16 09:18 | 只看該作者 | 來自河南
這個一定要頂
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號 )

網(wǎng)絡(luò)信息服務信用承諾書 | 增值電信業(yè)務經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號

GMT+8, 2024-12-22 11:12 , Processed in 0.096949 second(s), 12 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復 返回頂部 返回列表