adb從基礎到進階

2023-11-19 06:00:21

一、adb的工作原理

adb是cs架構,由三部分組成,分別是client,server,daemon,他們的關係見下圖

 

server是整個架構的核心

server負責接收client的指令,然後將指令傳送給手機上的daemon

server負責接收daemon的執行結果,然後將結果返回給client

 

二、adb環境搭建

a、安裝java環境,並設定環境變數

b、安裝安卓adk,下載路徑如下

https://developer.android.com/studio/releases/platform-tools?hl=zh-cn

 

三、adb的基礎使用

1、連線裝置

adb -d  #指定當前唯一通過usb連線的安卓裝置作為命令的目標

adb -e  #指定當前唯一執行模擬器的安卓裝置作為命令的目標

adb -s  #指定相應的裝置id作為命令的目標

  

2、檢視裝置的狀態

adb devices  #檢視當前pc可以查詢到的安卓的裝置,並可以檢視對應的裝置的狀態

adb get-state  #作用同adb devices

  

裝置的狀態有以下幾種

device   是屬於正常的狀態

offline    連線出現異常

unauthorized  裝置未授權

3、連線模擬器(這裡我們採用網易的木木模擬器)

adb_server.exe connect 127.0.0.1:7555
adb_server shell # 進入對應的安卓裝置,我們知道,安卓底層其實也是linux

  

 

4、連線真機,需要有以下條件

a、手機需要進入偵錯模式(開啟開發者模式,開啟usb偵錯)

b、電腦需要安裝對應的手機的驅動

c、手機通過usb和pc連線

 

5、通過adb安裝和解除安裝app

adb install apk路徑        #首次安裝

adb install -r apk路徑     #覆蓋安裝

  

adb uninstall   包名  #解除安裝,會刪除快取檔案和組態檔

adb uninstall -k 包名   #解除安裝,不刪除快取檔案和組態檔

  

6、adb獲取當前的頁面和啟動頁面

這裡需要給大家介紹2個名詞

package包:是安卓應用的唯一標識
Activity活動頁:安卓應用的頁面,一個頁面就是一個activity

a、我們可以先在手機開啟一個app

b、執行下面的命令,可以獲取包名和當前的activity

adb shell "dumpsys window |grep mCurrentFocus"

  

 

 包名:com.taobao.taobao

activity:com.taobao.tao.welcome.Welcome

 

c、其他檢視包名的方法

adb shell pm list packages -3  #檢視當前手機上安裝的第三方的應用

  

 

d、獲取到包名和activity後,我們就可以通過adb命令啟動某個app的某個頁面

啟動頁面的命令:adb shell am start -n com.taobao.taobao(包名)/com.taobao.tao.welcome.Welcome(activity名)

  

 

e、上面是獲取指定的頁面的activity,這裡我們介紹下如何獲取到啟動介面

首先執行下面的命令

先執行adb命令:adb logcat ActivityManager:I | findstr "cmp"

  

然後啟動應用,出現的第一個cmp就是啟動頁

 

7、adb清理app快取

adb shell pm list packages   #獲取當前手機上安裝的所有應用
adb shell pm list packages -s #獲取當前手機上安裝的系統應用
adb shell pm list packages -3  #獲取當前手機的第三方應用

adb shell pm clear 包名        #清理的應用的快取

  

 

8、adb如何執行安卓的內部命令

adb shell linux命令

  

 

9、adb命令在pc和手機間傳輸檔案

adb pull /sdcart/aaaa.txt ./    #手機到電腦到 pull檔案

adb  push "C:\Program Files\python\Scripts\pip.exe" /sdcard/    #電腦到手機,push

  

 

 

四、adb高階用法

1、adb檢視紀錄檔

a、安卓的紀錄檔級別

 

b、檢視紀錄檔的命令
adb logcat   #預設的每一列的是:紀錄檔的時間、父程序、子程序、紀錄檔的級別、紀錄檔的tag、紀錄檔的內容

 

 

c、檢視紀錄檔常用引數

 

d、紀錄檔的過濾引數(過濾某個tag的某個級別以上的紀錄檔)

 

adb logcat SntpClient:D "*:S"   #過濾SntpClient模組D以及D級別以上的紀錄檔  ,*:S的意思是其他的紀錄檔都不要顯示

  

 

 

 

2、adb模擬按鍵操作

a、根據座標來做點選操作

在手機的開發者選項中開啟「指標位置」

 

adb shell input tap x座標 y座標(根據座標點選,點下去擡起來)

  

 

b、input輸入框操作
輸入框的輸入,滑鼠先要放到輸入框中:>adb shell input text 13925293887

  

c、滑動操作
滑動:adb shell input swipe 初始x座標,初始y座標,結束x座標,結束y座標,滑動用的時間(單位毫秒)

  

e、模擬按鍵操作
adb shell input keyevent 4(返回上一步操作)
adb shell input keyevent 3(返回主頁)

1、官方檔案使用,後面的命令就會執行通話鍵:adb shell input keyevent KEYCODE_CALL

2、官方檔案說明,後面的命令就會執行相機鍵:adb shell input keyevent KEYCODE_CAMERA

  其他按鍵說明:https://developer.android.com/reference/android/view/KeyEvent



3、adb獲取安卓的效能指標

a、獲取cpu的資訊
獲取cpu的使用情況:>adb shell dumpsys cpuinfo,後面加包名可以獲取應用的資源佔用情況

  

b、獲取記憶體的資訊
獲取記憶體的使用情況:>adb shell dumpsys meminfo,後面加包名可以獲取應用的資源佔用情況

  

c、同樣可以檢視top命令
adb shell top

  

d、獲取電池的狀態資訊
adb shell dumpsys battery

  

Max charging current: 20000000  #最大充電電流;mA

health: 2      #電池健康狀態:只有數位2表示good

status: 2      #電池狀態:2:充電狀態,其他數位為非充電狀態

present: true   #電池是否安裝在機身

level:81          #電量:百分比

scale: 100    #電池當前可用的百分比

voltage: 4108   #電池電壓

temperature: 353  #電池溫度,單位是0.1攝氏度

technology: Li-poly  #電池種類

  

 

4、monkey的用法

a、基礎命令
1、新增100個事件數:adb shell monkey 100


#會隨機選n個應用,然後做各種動作



2、只對具體的某個某幾個app做monkey測試,其中-p可以寫多個,每個可以接一個應用的包名:

adb shell monkey -p org.mozilla.firefox 100


3、設定事件和事件的相隔多少毫秒:

adb shell monkey -p org.mozilla.firefox --throttle 100 100


4、-s選項設定種子數,相同的種子數可以做回放seed可以看到本次monkey的種子數:


adb shell monkey -p org.mozilla.firefox -s 3456789 --throttle 100 100

  

b、事件種類
--pct-touch

觸控事件
--pct-motion
滑動事件
--pct-trackball

軌跡球事件
--pct-nav
導航事件,比如輸入裝置上、下、左左、右鍵
--pct-majornav

主要導航事件,,比如中間鍵、返回鍵、選單鍵

--pct-syskeys

系統按鍵事件,比如HOME鍵、BACK建、撥號鍵及音量鍵
--pct-appswitch:

activity之間的切換

--pct-pinchzoom:
縮放事件

--pct-rotation

螢幕旋轉事件
--pct-flip

鍵盤事件

--pct-anyevent

任意事件

  

c、可以設定不同事件型別的比例,這裡需要注意(裝置的比例要小於等於100%)

 

 

d、設定monkey忽略異常

 

e、monkey紀錄檔