Android調試橋(ADB, Android Debug Bridge)是一個Android命令行工具,包含在SDK 平臺工具包中,adb能夠用於鏈接Android設備,或者模擬器,實現對設備的控制,好比安裝和調試應用。和Appium同樣,adb也是基於C/S架構實現的。linux
adb分爲三個部分:PC上的adb client,adb server和手機(也多是PC上的模擬器)上的adb daemon。這是一個多多鏈接的設計。即一臺PC能夠鏈接多個手機,一臺手機也能夠鏈接多個PC。android
Client和Server之間經過TCP/IP通訊,Server偵聽本機的5037端口,Client試圖去鏈接這個端口。基於ADB的工具備 DDMS 、monkey 測試等git
netstat -nao | findstr 5037
adb start-server
adb kill-server
adb -P <port> start-server
在發送adb命令時,若是沒有pc沒有啓動Server,則會自動啓動一個Server,而後將命令發送到Server。shell
adb tcpip 5555 adb -s 611DKBQC22SH2 tcpip 5555 # 設備在 5555 端口監聽 TCP/IP 鏈接
無線鏈接要將 Android 設備與將運行 adb 的電腦鏈接到同一個局域網windows
ADB Client經過命令adb connect ip鏈接遠程的終端api
adb connect 127.0.0.1:62001 #夜遊神模擬器 adb connect 127.0.0.1:7555 #網易mumu模擬器 adb disconnect <device-ip-address> # 斷開鏈接
USB鏈接
開啓Android 設備的開發者選項和 USB 調試模式緩存
以 root 權限運行 adbdbash
adb root adb -s 611DKBQC22SH2 root
查看 adb 版本服務器
adb version
查看設備名稱網絡
adb devices
重啓手機
adb reboot
查看appPackage和appActivity
# 1 adb logcat | findstr -i displayed # 打印手機日誌 # 2 adb shell dumpsys activity # 3 C:\Users\admin> adb shell root@shamu:/ # dumpsys activity | grep kaoyan # 4 adb shell dumpsys activity top # 5 adb shell dumpsys activity|findstr mFocusedActivity # 進入APP,獲得APP名 # 6 adb shell dumpsys window windows|findstr "Current" # 7 adb shell pm list packages #全部應用列表 adb shell pm list packages -s # 系統應用 adb shell pm list packages -3 # 第三方應用 adb shell pm list packages smart # 包名包含smart字符串的應用
安裝卸載apk包
模擬器能夠直接把安裝包拖入模擬器進行安裝
adb安裝卸載方法:
# 卸載 adb uninstall 包名 # 安裝 adb install app.apk adb install -r app.apk # 強制安裝
adb shell am start [options]
adb shell am force-stop
adb shell am start -n com.tenda.smarthome.app/.activity.main.MainActivity # 打開smarthome APP adb shell am force-stop com.tenda.smarthome.app # 強制中止應用 adb shell pm clear <packagename> # 清除應用數據與緩存 adb shell am start -a android.intent.action.VIEW -d https://www.baidu.com # 打開網頁
adb shell input keyevent
adb shell input keyevent 3 # 按下HOME 鍵 adb shell input keyevent 4 # 按下返回鍵 adb shell input keyevent 26 # 按下電源鍵 adb shell input keyevent 82 # 按下菜單鍵 adb shell input keyevent 223 # 熄滅屏幕 adb shell input keyevent 224 # 點亮屏幕 adb shell input keyevent 67 # 刪除
adb shell input text "text" # 向文本框中輸入文字,不支持中文
adb shell input tap 458 573 根據座標點擊
adb shell input swipe
adb shell input swipe 550 1200 550 375 # 滑動解鎖 adb shell input swipe 700 200 100 200 # 左翻頁 adb shell input swipe 100 200 1000 200 # 右翻頁
C:\Users\DELL>adb shell root@M5:/data # su 提取到root權限,顯示井號便可 su root@M5:/ # ls ls @btmtk acdapi adb agps_supl ... root@M5:/data # ls -l ls -l drwxrwx--- bluetooth net_bt 2019-03-01 14:26 @btmtk drwxrwx--- system system 2019-03-01 14:26 acdapi drwx------ root root 2019-03-01 14:26 adb drwxrwx--x gps system 2019-07-19 10:49 agps_supl drwxrwx--- system system 2019-03-01 14:26 amit drwxrwxr-x system system 2019-07-22 09:13 anr drwxrwx--x system system 2019-08-01 09:00 app drwx------ root root 2019-03-01 14:26 app-asec root@M5:/data # pwd 當前路徑 pwd /data root@M5:/data/system # cd - 切換到上次目錄 cd - /data root@M5:/data # cd .. 切換到上級目錄 cd .. 2|root@M5:/ # cd d*a cd d*a root@M5:/data # cd s*m 目錄名較長時建議使用通配符"*",如cd到system目錄 cd s*m root@M5:/data/system #
rm -r crash # 刪除文件夾及內容 rmdir # 文件夾 刪文件夾 rm # 文件 刪文件 cat filename # cat,more less顯示文件內容 cp /data/data/com.android.contacts/databases/contacts_app.db /mnt/sdcard/ # 複製 mkdir # 建立目錄 du # 顯示目錄空間大小 df # 顯示磁盤空間大小 touch test.txt # 建立文件 ps # 顯示進程 top # 動態顯示進程狀態 chmod 644 # 改變權限
CTRL+C 退出shell模式
root@M5:/mnt/sdcard # ^C C:\Users\DELL>d:
將手機文件pull到電腦
D:\>adb pull sdcard/cmcc_sso_config.dat # 將手機sdcard中的cmcc_sso_config.dat 文件copy到電腦D:根目錄下 D:\>adb pull sdcard/cmcc_sso_config.dat D:\adbtest D:\>
D:\>adb push D:/adbtest/cmcc_sso_config111.dat /sdcard/ # 將D:中的cmcc_sso_config111.dat copy到手機sdcard 文件夾下 D:\>adb shell root@M5:/ # cd /mnt/sdcard cd /mnt/sdcard root@M5:/mnt/sdcard # ls *cmcc_sso_config* ls *cmcc_sso_config* cmcc_sso_config.dat cmcc_sso_config111.dat root@M5:/mnt/sdcard # find /data -name "cmcc_sso_config*" find /data -name "cmcc_sso_config*" /data/media/0/cmcc_sso_config.dat /data/media/0/cmcc_sso_config111.dat
D:\>adb shell screencap -p /sdcard/screen.png D:\>adb pull /sdcard/screen.png D:\>adb shell rm /sdcard/screen.png
D:\>adb shell screenrecord /sdcard/filename22.mp4 D:\>adb pull /sdcard/filename22.mp4 D:\>adb shell rm /sdcard/filename22.mp4 D:\>adb shell screenrecord --time-limit 10 /sdcard/demo.mp4 adb shell screenrecord --size 1280*720 /sdcard/demo.mp4 adb shell screenrecord --bit-rate 6000000 /sdcard/demo.mp4
D:\>adb shell svc wifi disable # 關閉WiFi D:\>adb shell svc wifi enable # 開啓WiFi D:\>adb shell ping -w 3 8.8.8.8 # 查看是否能聯網 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. --- 8.8.8.8 ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms D:\>adb shell cat /data/misc/wifi/*.conf # 查看鏈接過的 WiFi 密碼 ..... device_name=meizu_M5 manufacturer=Meizu model_name=M611D model_number=M611D serial_number=611DKBQC22SH2 device_type=10-0050F204-5 os_version=01020300 config_methods=physical_display virtual_push_button p2p_no_group_iface=1 external_sim=1 wowlan_triggers=disconnect network={ ssid="Plug_C415" key_mgmt=NONE priority=1 flag=1 } network={ ssid=" " key_mgmt=NONE priority=2 flag=1 } network={ ssid="test" psk="12345678" key_mgmt=WPA-PSK priority=3 flag=1 }
經過adb shell,輸入命令,能夠切換飛行模式
開啓飛行模式
adb shell settings put global airplane_mode_on 1 adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true
關閉飛行模式
adb shell settings put global airplane_mode_on 0 adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false
這個腳本在/system/bin目錄下,能夠用來控制電源管理,wifi開關,數據開關(就是上網流量)
控制usb插入的時候屏幕是否常亮
svc power stayon [true|false|usb|ac]
關閉數據鏈接(上網流量),這個命令不會更改app的任何設置,直接在底層關閉數據鏈接。
svc data disable
打開上網數據鏈接
svc data enable
控制3g數據鏈接比wifi優先。
svc data prefer
關閉wifi 鏈接
svc wifi disable
開啓wifi鏈接
svc wifi enable
設置wifi優先
svc wifi prefer
上面的命令都要在shell中執行,須要root。能夠用script ,而後輸入這些命令作成在快捷方式放在桌面,跟那些開關軟件同樣方便使用。
android busybox解決adbshell命令不全
安卓雖然是基於linux,可是精簡了不少linux工具,不少經常使用的linux指令不能使用。busybox至關於一個打包的工具箱,打包了不少的經常使用的linux可執行文件和其依賴。安裝了busybox你就能夠在安卓下下載一個模擬終端而後在裏面運行一些以前不能運行的指令。
wpa_supplicant本是開源項目源碼,被谷歌修改後加入Android移動平臺,它主要是用來支持WEP,WPA/WPA2和WAPI無線協議和加密認證的,控制漫遊和無線驅動的IEEE 802.11 驗證和關聯。經過socket(無論是wpa_supplicant與上層仍是wpa_supplicant與驅動都採用socket通信)與驅動交互上報數據給用戶,而用戶能夠經過socket發送命令給wpa_supplicant調動驅動來對WiFi芯片操做。 簡單的說,wpa_supplicant就是WiFi驅動和用戶的中轉站外加對協議和加密認證的支持。
wpa_supplicant工具主要包含wpa_supplicant(命令行模式,屬於服務端)與wpa_cli(交互模式,屬於客戶端)兩個程序來達到無線認證鏈接。經過wpa_cli來進行WiFi的配置和鏈接,也能夠直接調用wpa_supplicant接口實現網絡控制。
部分命令:
wpa_cli -i wlan0 scan \\掃描熱點 wpa_cli -i wlan0 scan_result \\打印熱點信息 wpa_cli -i wlan0 set_network 0 ssid "wifi_name" \\配置WiFi熱點的名稱ssid wpa_cli -i wlan0 set_network 0 psk '"12345678"' \\配置WiFi熱點的密碼psk
文章標題:Android ADB原理及經常使用命令
本文做者:hiyo
本文連接:https://hiyong.gitee.io/posts/appium-adb/ 歡迎關注公衆號:「測試開發小記」及時接收最新技術文章!