一、什么是adb
adb(Android Debug Bridge) 意為android調(diào)試橋,作用:遠程訪問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 進入輸入模式樱拴,在文件內(nèi)容的末尾加入以下內(nè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、日志打玉捎尽:adb 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)內(nèi)存:adb shell dumpsys meminfo
? ?查看app內(nèi)存使用: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調(diào)試信息
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為查詢出來的進程號)
查看內(nèi)存使用狀況: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調(diào)試;
可能是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耸黑,可以看到你的設備了;
當我們按照日志級別去查詢?nèi)罩緯r篮幢,會出現(xiàn)zsh:no matches found:*:E
出現(xiàn)原因:
zsh不兼容問題導致大刊;
解決方法:
在終端輸入:vim ~/.zshrc;
在~/.zshrc中加入:setopt no_nomatch三椿,保存并退出缺菌;
在終端輸入:source .zshrc命令,更新配置文件搜锰;
參考文檔:
http://www.reibang.com/p/5697889bd08b
https://www.cnblogs.com/bamanzi/p/zsh-simple-guide.html
http://www.reibang.com/p/4d3d23856991
http://www.reibang.com/p/d85e95f28338
http://www.reibang.com/p/6769bfc3e2da
http://www.reibang.com/writer#/notebooks/41473905/notes/57949214