ADB技能使用初級篇(上)

作為一名android開發的同學,還是測試開發者,adb命令都是工作中必備的技能,今天主要梳理一下adb的初級使用技能。

adb是什麼?,我們來看看Google官方給它的解釋:

adb (android debug bridge) 是一個通用命令行工具,其允許你與模擬器實例或連接的 Android 設備進行通信。它可為各種設備操作提供便利,如安裝和調試應用,並提供對 Unix shell(可用來在模擬器或連接的設備上運行各種命令)的訪問。

adb是一個強大的命令行工具,我們通過它可以去操作我們的設備,adb的位置一般在android sdk的platform-tools目錄下。我們看看adb強大的命令。

Advertisements

圖片來自網路

1.adb devices

devices命令可以檢測當前電腦上連接了那些設備,它的輸出方式為

List of devices attached

serial_number state

serial_number :由adb創建的序列號,用來標示一個設備

state:狀態號,它有三種狀態

  • offline — 實例未連接到 adb 或不響應。

  • device — 實例現在已連接到 adb 伺服器。請注意,此狀態並不表示 Android 系統已完全啟動且可以運行,因為在此實例連接到 adb 時系統仍在啟動。不過,在啟動后,這將是模擬器/設備實例的正常運行狀態。

  • no device — 未連接模擬器/設備。

    Advertisements

例如:

2.adb [-d|-e|-s serial_number] <子命令> 向特定的設備發送命令

如果只有一個設備或者模擬跟電腦相連,adb默認會將命令發送到該設備上,實際工作中我們的工作機上可能不止連接了一台設備,那如何向一台特定的設備發送命令呢

  • -d 將命令發送到真實的android設備上

  • -e 將命令發送到android的模擬器

  • -s 設備或者模擬器的序列號

3. install [options] path 安裝應用:例如在一個手機上裝一個apk,adb -d -s 39ad65 install test.apk

path:安裝應用的絕對路徑名稱

[options]:可選項,已有以下幾個:

  • -l:安裝具有轉發鎖定功能的軟體包。

  • -r:重新安裝現有應用,保留其數據。

  • -t:允許安裝測試 APK。

  • -i installer_package_name:指定安裝程序軟體包名稱。

  • -s:在共享的大容量存儲(如 sdcard)上安裝軟體包。

  • -f:在內部系統內存上安裝軟體包。

  • -d:允許版本代碼降級。

  • -g:授予應用清單文件中列出的所有許可權。

4 uninstall [options] package 卸載應用

默認卸載應用時刪除應用緩存,options 可選參數為-K表示卸載應用后保留數據和緩存目錄,卸載應用的時候指定應用包名即可。

5.adb pull/adb push 命令

adb pull remote local 從設備或者模擬器複製文件到本地

adb push local remote 將文件複製到設備或者模擬器

local 和 remote 指的是開發計算機(本地)和模擬器/設備實例(遠程)上目標文件/目錄的路徑。例如:adb push test.txt /sdcard/test.txt

6.adb forward 埠轉發命令

這個命令也是超級實用的一個命令,這個命令和其他工具配合實用,就可以是實現實時抓取android手機的網路請求數據

adb forward tcp:8888 tcp:9999 表示從當前主機的8888埠到設備的9999埠的轉發

7.adb kill-server adb start-server

為啥這個兩個命令放到一起說呢,因為一般它們都是配合實用的,這一對命令使用頻率非常高,adb kill-server 殺掉adb進程,當我的手機連接到電腦上,發現adb啟動不了,我們可以先用kill-server命令,再使用adb start-server命令來啟動adb進程。

二.adb shell 命令;

進入adb shell命令也非常簡單,直接在指定的設備上執行adb shell即可

  1. pm命令

install [options] path 安裝應用程序,pm install path 在root手機root情況下可以實現靜默安裝,

  • -l:安裝具有轉發鎖定功能的軟體包。

  • -k:移除軟體包后保留數據和緩存目錄。

  • -r:重新安裝現有應用,保留其數據。

  • -t:允許安裝測試 APK。

  • -i installer_package_name:指定安裝程序軟體包名稱。

  • -s:在共享的大容量存儲(如 sdcard)上安裝軟體包。

  • -f:在內部系統內存上安裝軟體包。

  • -d:允許版本代碼降級。

  • -g:授予應用清單文件中列出的所有許可權。

uninstall [options] package 卸載一個應用

-k:移除軟體包后保留數據和緩存目錄

2.clear package 清除目標應用的所有數據

3. am start 命令 例如啟動一個Activity

adb shell am start -n 包名/包名.類名

4. force-stop package

強行停止與 package(應用的包名稱)關聯的所有應用

5. kill [options] package

終止與 package(應用的包名稱)關聯的所有進程。此命令僅終止可安全終止且不會影響用戶體驗的進程。

  • --user user_id | all | current:指定將終止其進程的用戶;如果未指定,則終止所有用戶的進

6.ps 命令 獲取進程信息

輸出格式:

USER PID PPID VSIZE RSS WCHAN PC NAME

  • USER : 進程的當前用戶;

  • PID : process ID的縮寫,也就進程號;

  • PPID : process parent ID,父進程ID

  • VSIZE : virtual size,進程虛擬地址空間大小;

  • RSS : 進程正在使用的物理內存的大小;

  • WCHAN : 進程如果處於休眠狀態的話,在內核中的地址;

  • PC : program counter,

  • NAME : process name,進程的名稱

這些都是一些常用的adb命令,一些adb的高級使用方式和常見問題解決,將在下次分享出來。

Advertisements

你可能會喜歡