一、什么是adb
adb(Android Debug Bridge) 意為android調試橋,作用:遠程訪問Android設備(連接PC和Android)
ADB是一個C/S架構的應用程序,由三部分組成:
adb client, 運行在PC上(為DDMS,即IDE工作)
adb daemon(守護進程), 運行于Emulator(為與Emulator中的VM交互工作);
adb server(服務進程), 運行在PC(任務管理器上有),管理著adb client和adb daemon的通信。
adb連接邏輯:
二、安裝及使用
Android platform-tools下載(參考):http://tools.android-studio.org/index.php/sdk;
配置環(huán)境變量:
打開終端Terminal,進入根目錄(cd ~/);
在終端中輸入vim ~/.bash_profile ,打開 .bash_profile文件。按 i 進入輸入模式,在文件內容的末尾加入以下內容:
export PATH=${PATH}:/Users/xxx/Library/Android/sdk/platform-tools
export PATH=${PATH}:/Users/xxx/Library/Android/sdk/tools
這里面的xxx根據(jù)自己實際的用戶名稱進行修改
點擊 esc ,輸入 :wq ?回車(保存并退出文本);
添加完成后輸入:source ~/.bash_profile 更新配置的環(huán)境變量;
驗證:輸入adb version ,輸出Android Debug Bridge version,配置成功;
三、adb常用命令
1、包安裝:adb install?
adb install .apk路徑 / adb -r install .apk路徑 / adb uninstall 包名
2、文件傳輸:adb pull/push
? ?拉:adb pull <設備里的文件路徑> [電腦上的目錄]
? ?推:adb push 電腦上文件 /sdcard
3、WiFi連接:adb connect/disconnect
? ?adb tcpip 5555
? ?adb connect xx.xx.xx.xx:5555
? ?adb disconnect xx.xx.xx.xx:5555
4、日志打?。篴db logcat
? ?抓崩潰:adb logcat | grep AndroidRuntime ??
5、activity管理:adb shell am (activity manager)
? ? 啟動APP:adb shell am start -W -n 包名/啟動Activity
? ? 關閉APP:adb shell am force-stop 包名
6、包管理:adb shell pm(package manager)
? ? 清理環(huán)境:adb shell pm clear 包名
? ? 三方包名:adb shell pm list packages -3?
7、截圖錄屏:adb shell screencap / ?adb shell screenrecord
? ?截圖:adb shell screencap -p /sdcard/test.png?
? ?錄屏:adb shell screenrecord /sdcard/test.mp4
8、系統(tǒng)信息:adb shell dumpsys
? ?1)活動:adb shell dumpsys activity
? ?查看頁面活動:adb shell dumpsys activity activities | grep mResumedActivity
? ?2)電池:adb shell dumpsys battery
? ?模擬低電量:adb shell dumpsys battery set level 1
? ? ? ? ?復位:adb shell dumpsys battery reset
? ?3)內存:adb shell dumpsys meminfo
? ?查看app內存使用:adb shell dumpsys meminfo 包名 ?
? ?4)CPU: adb shell dumpsys cpuinfo?
? ?查看appCPU使用:adb shell dumpsys cpuinfo 包名 ?
? ?5) FPS:adb shell dumpsys gfxinfo
? ?查看app流暢度:adb shell dumpsys gfxinfo 包名
9、adb shell wm
? ?1)分辨率:adb shell wm size
? ? 模擬分辨率:adb shell wm size 480x1024
? ? ? ? ? ?復位:adb shell wm size reset
? ?2)密度:adb shell wm density
? ? 模擬密度:adb shell wm density 800
? ? ? ? ? ?復位:adb shell wm size reset
?10、adb shell input?
? ?1)adb shell input keyevent
? ? 按home鍵:adb shell input keyevent 3?
? ?2)adb shell input text
? ? 輸入12345文本:adb shell input text 12345
? ?3)adb shell input tap?
? ? 點擊位置(20,1000):adb shell input tap 20 1000
? ?4)adb shell input swipe
? ? 從(10,20)滑動到(100,200):adb shell input swipe 10 20 100 200
others:
查看設備:adb devices 查看所有連接到電腦上的Android設備
安裝軟件:adb install app包名 ?(adb install -r app包名 ? ?| ? -r:覆蓋安裝)
查看包信息:adb shell dumpsys package XXX? ? ? 查看某個包的具體信息(前提是需要知道包名是什么)? ? ?
查看當前正在運行的Activity:adb logcat | grep ActivityManager? ? ? ?adb logcat | grep Displayed? ?? ? ? ? ? ? ? ??
查看包名的方式:
adb shell pm list packages -3 -- 只輸出第三方的包?
adb shell pm list packages -e "daliketang" ?-- ?設置過濾條件,只輸出啟用的包
卸載軟件:adb uninstall app包名(在安裝軟件的時候,可能會出現(xiàn)安裝失敗的情況,如果在之前沒有刪除干凈,或安裝的時候會提示與安裝簽名不同等失敗提示,此時使用uninstall命令可以完全清除之前沒有卸載干凈的app)
將電腦本地文件上傳到android手機(adb push <local> <remote>)
adb push /Users/bytedance/Downloads/qingbei_xiaomi_v1.6.2_d59019f.apk /sdcard
將手機上文件上傳電腦(adb pull <remote> <local>)
adb pull /sdcard/qingbei_xiaomi_v1.6.2_d59019f.apk ~/Downloads
查看日志:adb logcat > ~/Downloads/20200324.log (“>”是重定向的意思,將查到的日志進行輸出;“>”后面的為輸出的絕對路徑)log日志?
抓日志的前提條件:發(fā)現(xiàn)了一個crash/anr
日志級別:
i:infor信息
d:debug調試信息
w:waring警告信息
e:error報錯信息
抓取日志的關注點:
crash:崩潰(日志中搜索crash或exception)
anr:application not response:應用無響(日志中搜索anr)
adb logcat *:e> ~/Downloads/2020.log (*:e:抓取e級別以上的所有信息)
小技巧:測試之前可以提前將手機開發(fā)者選項打開,找到“日志記錄器緩沖區(qū)大小”,每個日志緩沖區(qū)選擇“16M”;(其目的是在測試的過程中,如果出現(xiàn)了不可復現(xiàn)的crash,可以通過抓取日志的方式,獲取到app之前記錄的緩存日志)
monkey測試:也叫穩(wěn)定性測試(穩(wěn)定性測試、壓力測試、隨機測試三種不同的叫法)
monkey:像猴子一樣亂點
目的:測試軟件的穩(wěn)定性,健壯性,壓力
monkey命令:adb shell monkey -p com.edu.android.daliketang -v -v -v -s 16 200000 > ~/Downloads/monkeytest.log
-v:顯示運行時候的日志信息級別(-v -v -v顯示全部日志信息)
-s:種子數(shù),隨機事件數(shù)(兩次命令的執(zhí)行軌跡一樣)
查看日志中是否存在異常情況,如搜索crash、anr等關鍵字 ?(正常結束的Monkey測試,日志的末尾處有finished關鍵字)
停止monkey的方式:
adb shell(登錄設備)
top|grep "monkey" (實時查詢monkey的進程號)
kill -9 11673(-9:強制殺死進程;11673為查詢出來的進程號)
查看內存使用狀況:adb shell dumpsys meminfo com.edu.android.daliketang
adb kill-server:關閉adb
adb start-server:打開adb
四、adb使用過程中常遇問題
mac下無法識別安卓設備:list of devices attached
出現(xiàn)原因:
開發(fā)者選項中沒有開啟usb調試;
可能是Mac沒有將廠商的設備id識別,需手工輸入;
解決方法:
打開終端,輸入system_profiler SPUSBDataType命令,查詢連接usb設備信息;
找到設備供應商id,Vendor ID,并記錄下來;
終端輸入:vim ~/.android/adb_usb.ini,把ID寫入后,保存退出;
重啟adb服務,adb kill-server;
打開adb,adb start-server;
終端輸入adb devices,可以看到你的設備了;
當我們按照日志級別去查詢日志時,會出現(xiàn)zsh:no matches found:*:E
出現(xiàn)原因:
zsh不兼容問題導致;
解決方法:
在終端輸入:vim ~/.zshrc;
在~/.zshrc中加入:setopt no_nomatch,保存并退出;
在終端輸入:source .zshrc命令,更新配置文件;
參考文檔:
http://www.itdecent.cn/p/5697889bd08b
https://www.cnblogs.com/bamanzi/p/zsh-simple-guide.html
http://www.itdecent.cn/p/4d3d23856991
http://www.itdecent.cn/p/d85e95f28338
http://www.itdecent.cn/p/6769bfc3e2da
http://www.itdecent.cn/writer#/notebooks/41473905/notes/57949214