一.介紹
adb全稱為Android Debug Bridge調試橋, 使PC電腦通過USB或網絡/WIFI連接Android手機!
1.PC電腦端的adb程序是adb.exe(Windows系統), 位于Android SDK\platform-tools\adb.exe
2.Android手機端adb程序是adbd
3.adb可直接操作android手機:
電腦和手機之間傳輸文件
安裝和卸載手機apk
進入手機shell(Linux命令行)
啟動app組件(Activity/Service等等)
輸出日志log
......
4.Android用戶分類(id小,權限高)
root用戶 uid 0 gid 0
system用戶 uid 1000 gid 1000
shell用戶 uid 2000 gid 2000
app用戶 uid 大于10000 gid 大于10000
Android像素密度 比值 圖標實例 屏幕實例
xxxhdpi=640 4 192*192 3840*2160
xxhdpi=480 3 144*144 1920*1080
xhdpi=320 2 96*96 1280*720
hdpi=240 1.5 72*72 480*800
mdpi=160(基準) 1 48*48 480*320
ldpi=120 0.75 36*36 320*240
二.adb命令
0.通過網絡/wifi連接手機(必須在同一局域網)
adb connect 手機ip
1.查看已連接的Android設備列表及狀態
adb devices
2.查看已連接的Android設備狀態
adb get-state
設備狀態有3鐘
device:設備正常連接
offline:連接出現異常,設備無響應
unknown:沒有連接設備
3.啟動adb服務 adb kill-server
結束adb服務 adb start-server
4.安裝與卸載應用
adb install -r apk路徑 (-r覆蓋安裝,-s安裝在sdcard)
adb uninstall -k app包名 (-k保留數據和緩存)
5.手機與電腦互傳文件
adb push 電腦文件 手機路徑
adb pull 手機文件 電腦路徑 (不設置電腦路徑,默認是輸入命令的當前目錄)
6.重啟
adb reboot 重啟
adb reboot recovery 重啟到恢復模式
adb reboot bootloader 重啟到引導模式
7.查看應用日志 adb logcat
查看通信日志 adb logcat -b radio (常用于查看詳細的通話狀態)
8.用PC端口通過socket遠程連接Android進程
adb forward tcp:PC端口 jdwp:Android進程
例如:adb forward tcp:8000 jdwp:472
三.adb shell命令(輸入adb shell進入Linux命令環境,以下命令省略adb shell)
命令后加 -h 可以查看幫助信息
1.pm命令(Package Manager,源碼:Pm.java)
查看安裝的應用包名
pm list package 列出所有應用包名
pm list package xx 列出指定應用包名(過濾關鍵字)
pm list package -s 列出系統應用包名
pm list package -3 列出第三方應用
pm list package -f 列出APK安裝路徑
pm list package -i 列出應用安裝來源
pm list instrumentation 列出含有單元測試的應用
查看apk安裝路徑
pm path app包名
權限保護級別:
normal - 表示權限是低風險的,不會對系統,用戶或其他應用程序造成危害
dangerous - 表示權限是高風險的,系統將可能要求用戶輸入相關信息,才會授予此權限
signature - 表示只有當應用程序所用數字簽名與聲明權限的應用程序所用數字簽名相同時,才會授予此權限
signatureOrSystem - 需要簽名或者系統級應用(放置在/system/app目錄下)才能賦予權限
system - 系統級應用(/system/app目錄下)才能賦予權限
查看權限信息
pm list permissions
-g 按組進行列出權限
-f 打印所有信息
-s 簡短的摘要
-d 只有危險的權限列表
-u 有權限的用戶看到列表/用戶自定義權限
pm list permission-groups 打印所有已知的權限組
pm grant <Packagename> <permission> 授予應用權限許可,Android 6.0以上系統
pm revoke <Packagename> <permission> 撤銷應用權限許可,Android 6.0以上系統
查看信息dump
pm dump app包名 查看指定包的系統狀態
pm dump activity名 查看指定activity的信息
pm dump meminfo 查看當前內存使用信息
pm dump procstats 查看系統內存使用與一段時間內存匯總
pm dump usagestats 查看服務使用狀態信息
pm dump batterystats 查看電池使用狀態信息
安裝與卸載應用
pm install app包名 (-r覆蓋安裝, -s安裝在sdcard, -d允許降級安裝)
pm uninstall app包名 (-k保留/data/data/app包名 或/sdcard/Android/data/app包名)
禁用與啟用應用或組件
pm disable app包名 或組件
pm enable app包名 或組件
清除應用數據
pm clear app包名
應用默認安裝目錄
pm set-install-location 2 設置應用安裝位置 0(auto) 1(手機內部存儲) 2(sdcard)
pm get-install-location 查看應用默認安裝目錄
系統功能與支持庫(support-xx.jar)
pm list features 打印系統所有功能/硬件相關信息
pm list libraries 打印當前設備所支持的所有庫存
2.am命令(源碼:Am.java)
啟動應用組件
am start -n packageName/組件Name
[-a <ACTION>]
[-d <DATA_URI>]
[-t <MIME_TYPE>]
[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
啟動相機
adb shell am start -n com.android.camera/.Camera
打開網頁
adb shell am start -a android.intent.action.VIEW -d http://lioil.win
撥打電話
adb shell am start -a android.intent.action.CALL -d tel:10086
發送短信
adb shell am start -a android.intent.action.SENDTO -d sms:10086 --es sms_body cxye#
啟動單元測試instrumentation
am instrument
監控crash與ANR
am monitor
結束應用
am force-stop 包名
啟動服務
am startservice 服務名
發送廣播
am broadcast -a 廣播action
3.input(輸入事件,源碼:Input.java)
發送文本內容(不能發送中文,先將鍵盤設為英文)
input text helloworld
發送按鍵事件
input keyevent KEYCODE_HOME 模擬按下Home鍵
input keyevent KEYCODE_BACK 模擬按下返回鍵
input keyevent KEYCODE_MENU 模擬按下菜單鍵
input keyevent KEYCODE_A 模擬按下字母A/a
發送屏幕觸摸事件
input tap 200 200 點擊屏幕上坐標為(200,200)的位置
發送滑動事件
input swipe 600 200 0 200 從右往左滑動
Android版本不低于4.4, 可以模擬長按事件(在極小范圍內長時間滑動,就是長按)
adb shell input swipe 200 200 201 201 2000
4.截屏和錄屏
截屏
adb shell screencap -p /sdcard/scr.png 截屏保存至sdcard目錄
adb pull /sdcard/scr.png 提取到PC端的當前目錄
錄屏
adb shell screenrecord /sdcard/rec.mp4 錄制視頻保存至sdcard目錄(ctrl+c結束)
adb pull /sdcard/rec.mp4 提取到PC端的當前目錄
默認錄制的視頻太大,可以修改視頻尺寸和比特率
screenrecord --size 400x800 --bit-rate 0.5M
5.其它命令
查看當前UI界面信息(UI hierchary)
uiautomator dump
不加[file]選項時,默認存放在sdcard
查看Android設備分辨率
wm size
查看Android設備參數
getprop ro.build.version.sdk 獲取系統sdk版本
getprop | grep version 獲取系統版本參數
查看CPU信息
cat /proc/cpuinfo
查看系統信息(CPU/內存/battery/activity等四大組件)
dumpsys cpuinfo
dumpsys meminfo
dumpsys battery
dumpsys diskstats
dumpsys package
dumpsys window
dumpsys activity | findstr Run 篩選出當前運行的Activity列表
dumpsys activity activities
dumpsys activity services
dumpsys activity broadcasts
dumpsys activity providers
dumpsys activity recents (TaskRecord)
dumpsys activity lastanr
dumpsys activity processes
dumpsys activity intents (PendingIntentRecord)
dumpsys activity permissions (UriPermission)
dumpsys activity starter
dumpsys activity settings
壓力測試
monkey -v -p 包名 點擊數
adb shell monkey -p com.android.settings 5000 > D:\monkey.log
在PC端執行monkey命令,將信息保存至D:\monkey.log
輸入法(源碼:Ime.java)
ime list -s 列出輸入法
ime set xxx 選擇輸入法
四.綜合應用
屏幕解鎖(刪除鎖屏文件)
rm /data/system/*.key
rm /data/system/locksettings.*
修改開機動畫
替換 /system/media/bootanimation.zip
三星系統 需替換 /system/bin/samsungani
修改手機字體
替換 /system/fonts/xxx.ttf
卸載系統應用(需要root權限)
1.獲取apk安裝路徑
pm path app包名
2.移除apk
rm apk安裝路徑;
3)刪除殘留文件
pm uninstall app包名
rm -r /data/data/app包名
備份應用和數據
apk安裝目錄 /data/apk/xxx.apk
應用數據目錄 /data/data/app包名
文件復制 cp -f -p -P -r
簡書: http://www.lxweimin.com/p/7c279e77aec7
CSDN博客: http://blog.csdn.net/qq_32115439/article/details/72814275
GitHub博客:http://lioil.win/2017/05/30/adb.html
Coding博客:http://c.lioil.win/2017/05/30/adb.html