adb調(diào)試工具使用
1.2 ADB的工作原理:
adb包含三個部分:
a. Client端:運行在開發(fā)機器中,用來發(fā)送adb命令,比如電腦
b. Daemon守護進程:運行在調(diào)試設備,比如手機、模擬器中,用來接收并執(zhí)行adb命令
c. Server端:運行在開發(fā)機器中,用來管理Client端和手機端Daemon之間的通信。
當在電腦命令行窗口中輸入adb 命令時,會先執(zhí)行adb客戶端,客戶端拿到命令之后,會發(fā)送給adb服務端,server再將命令傳給Daemon,最后在手機上執(zhí)行。假如在手機上安裝一個應用,會有一個返回信息,會將信息傳遞給adb服務器,adb 在給客戶端,最后顯示在命令行。
總結:
a.client端將命令發(fā)送給server端
b.server端會將命令發(fā)送給daemon端
c.daemon端進行執(zhí)行
d.將執(zhí)行結果,返回給server端
e.server端將結果再返回給client端
2.準備工作
2.1 打開調(diào)試模式
為了使用adb來控制、調(diào)試Android設備,我們需要使用USB數(shù)據(jù)線將PC和Android手機設備進行連接,當然必須要將手機設備的USB調(diào)試模式打開。
Android模擬器種類: - Android Studio emulator(官方),要根據(jù)電腦的性能進行使用 - genymotion(國外的軟件,需要訪問外網(wǎng)才可以使用) - mumu、雷電、夜神、逍遙等第三方模擬器(強烈推薦第三方軟件)
2.2 安裝adb
1)安裝JDK
2)Mac中安裝ADB命令
brew install android-platform-tools
3.ADB相關指令牛刀小試
3.1 簡單指令
1)驗證adb 是否安裝成功
adb help
或者
adb --help
會出現(xiàn)adb的版本和幫助信息
2)開啟或者關閉服務
adb start-server:開啟adb服務 adb kill-server:關掉adb服務
3)adb devices : 查看電腦是否連接設備
adb devices 或者 adb devices -l 或者 adb get-state
使用該指令將返回設備狀態(tài)信息,該狀態(tài)信息包含三種
devices狀態(tài):表示移動設備或者模擬器已經(jīng)連接到adb服務器上
offline狀態(tài):表示移動設備或者模擬器沒有連接到adb服務器或者沒有響應
no devices狀態(tài):表示沒有設備或者模擬器連接
3)adb install :安裝
第一種情況:當只有一臺設備時
a. adb install apk路徑 b. adb install -r :覆蓋原來安裝的軟件,并保留數(shù)據(jù) c. adb install-multiple demo1.apk demo2.apk d. adb install -t demo1.apk : 如果在安裝中,遇到Failure [INSTALL_FAILED_TEST_ONLY installPackageLI],則使用該命令 e. adb install -d demo.apk :允許版本代碼升級 f. adb install -g demo.apk :授權所有運行時權限
第二種情況:當有多臺設備時,使用-s 序列號 進行指定設備
adb -s 序列號 install apk路徑
4)adb uninstall :卸載
adb unstall demo.apk
卸載設備中的應用,并希望保留配置和緩存文件 adb -s 序列號 shell pm uninstall -k 包名
5)adb pull : 將移動設備中的文件傳送到PC上
adb pull 移動設備路徑 PC路徑
6)adb push :將PC中的文件傳送到移動設備端
adb push PC路徑 移動設備路徑 adb push PC路徑 /sdcard/
7)adb logcat:查看和跟蹤系統(tǒng)日志緩沖區(qū)的信息,
adb logcat >/Users/xxxx/demo.log 或者 adb -s 序列號 logcat >/Users/xxxx/demo.log
日志等級,優(yōu)先級從低到高分為以下幾種:
V——Verbose(最低等級,開發(fā)調(diào)試中的一些詳細信息,僅在開發(fā)中使用,不可再發(fā)布產(chǎn)品中) D——Debug(調(diào)試,用于調(diào)試的信息,可以在發(fā)布產(chǎn)品中關閉,比較常見) I——info(信息,一般提示性的信息) W——Warning(警告) E——Error(錯誤,已經(jīng)出現(xiàn)可影響運行的錯誤,比如應用crash時輸出的日志) 在 E級別中可以搜索這個關鍵字:fatal exception ANR全名Application Not Responding,也就是應用無響應當操作在一段時間內(nèi)系統(tǒng)無法處理時,系統(tǒng)層面會彈出ANR對話框 在日志中查詢:ANR in 在查到ANR in 之后 上一行會有
查看日志常用的參數(shù)
adb logcat -v time 打印時間 adb logcat -v color 使用不同的顏色來顯示每個優(yōu)先級 adb logcat -f <filename> 將日志輸出到文件(文件存在手機上),例如,adb logcat -f /sdcard/log.log adb logcat > log.log 保存日志到PC上 adb logcat -c 清理已存在的日志 adb logcat *:W 打印Warning以上級別的日志 adb logcat ActivityManager:D '*:S' 過濾tag 為ActivityManager,level為Debug及以上級別的日志(S表示無記載silent,最高優(yōu)先級,絕不輸出任何內(nèi)容) 3.2 高級指令——adb shell指令講解
Android系統(tǒng)是基于Linux系統(tǒng)開發(fā)的,支持常見的Linux命令,這些命令都保存在手機“/system/bin”文件中,如下圖所示:
1)顯示手機當前目錄的所有內(nèi)容
adb shell ls 或者分開使用 ~~adb shell ~~ls
注意:使用exit退出提示符 如果在操作過程中出現(xiàn)沒有權限的問題,則需要切換root用戶 su root
2)查看電池電量的相關信息
adb shell dumpsys battery 描述信息: AC powered: false //false表示沒有使用AC電源供電 USB powered: true //true表示使用USB電源供電 Wireless powered: false //false表示沒使用無線電源 status: 2 //2表示電池正在充電,1表示沒充電 health: 2 //2表示電池狀態(tài)優(yōu)秀 present: true //true表示已安裝電池 level: 42 //電池百分比 scale: 100 //滿電量時電池百分比為100%(不確定是否正確) voltage: 3868 //電池電壓 temperature: 330 //電池溫度為25攝氏度 technology: Li-ion //電池類型為鋰電池
3) 查看無限網(wǎng)絡信息
adb shell dumpsys wifi 由于該指令輸出的信息很多,所以在此加入?yún)?shù),當輸出信息在顯示滿一頁的時候就暫停輸出 如果想再繼續(xù)輸出,則需要按空格鍵繼續(xù)顯示下頁內(nèi)容。按“Q”停止顯示后續(xù)輸出信息。 adb shell dumpsys wifi | more
4)查看電源管理相關信息
adb shell dumpsys power 含義:可以判斷手機是否處于鎖屏狀態(tài) 根據(jù)關鍵信息進行查詢,僅輸出屏幕關閉時間的設置信息 windows設置: adb shell dumpsys power | findstr "mScreenOffTimeoutSetting" Linux設置: adb shell dumpsys power | grep "mScreenOffTimeoutSetting"
5)am
am 全稱為Activity Manager ,可以使用am去模擬各種系統(tǒng)的行為 adb shell am start com.taobao.taobao/com.taobao.tao.TBMainActivity
6)獲取包名和界面名
包名(Package,具有唯一性) 界面名(activity) adb shell dumpsys window | grep mFocusedApp 或者 adb shell "dumpsys window | grep mCurrentFocus"
7)獲取啟動時間——adb shell am start -W 包名/界面名
? ~ adb shell am start -W com.qiniu.pili.droid.shortvideo.effect.demo/com.qiniu.pili.droid.shortvideo.demo.activity.MainActivity Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.qiniu.pili.droid.shortvideo.effect.demo/com.qiniu.pili.droid.shortvideo.demo.activity.MainActivity } Status: ok Activity: com.qiniu.pili.droid.shortvideo.effect.demo/com.qiniu.pili.droid.shortvideo.demo.activity.MainActivity ThisTime: 289 TotalTime: 289 WaitTime: 311 Complete 以毫秒為單位 點擊圖標然后松開,這個時間是系統(tǒng)時間(分配內(nèi)存和CPU的時間),應用application等待資源啟動的時間 ThisTime:為界面啟動耗時 TotalTime:應用自身啟動耗時=ThisTime + 應用application等資源啟動時間 WaitTime:系統(tǒng)啟動耗時=TotalTime + 系統(tǒng)資源啟動時間
8)adb shell pm list packages 列出包名
- 列出所有的包名 adb shell pm list packages - 列出通過第三方安裝的包 adb shell pm list packages -3 pm全稱為package manager ,可以使用pm命令模擬Android行為或者查詢設備上的應用。
9)獲取手機Android系統(tǒng)各個分區(qū)的相關信息
10) 清除應用數(shù)據(jù)及緩存
pm 表示package management adb shell pm clear <包名>
4. adb 模擬手機按鍵
相關文檔:https://developer.android.com/reference/android/view/KeyEvent
打開“指針位置” 設置
設置——開發(fā)者選項——指針位置
執(zhí)行 adb shell input 命令
- 模擬點擊事件 adb shell input tap x坐標 y坐標 adb shell input tap 528 1539 - 輸入文本 首先需要把光標移到輸入框,然后執(zhí)行以下命令 adb shell input text zengzengzeng - 模擬滑動事件 adb shell swip <起點x> <起點y> <終點x> <終點y> <滑動時長> adb shell input swipe 528 1539 528 1300 2000 2000為滑動時間,單位是毫秒 - 返回鍵 adb shell input keyevent 4 - 返回home鍵(置應用于后臺) adb shell input keyevent 3 - 音量放大 adb shell input keyevent 24 - 音量縮小 adb shell input keyevent 25
5. CPU使用情況
1)查看當前系統(tǒng)CPU使用情況:
adb shell dumpsys cpuinfo 獲取的是一段時間的均值
2)進程占用情況
adb shell top adb shell top | grep "包名" —— 查看某個包的一些性能 adb shell top -d 1 |grep "包名"
3)內(nèi)存使用情況
adb shell dumpsys meminfo
————————————————
原文鏈接:https://blog.csdn.net/weixin_42182599/article/details/120654697
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。