1. 概念:
adb(android debug bridge)是android提供的基於CS架構的命令列除錯工具,使PC與安卓裝置之間實現通訊
2. 基礎原理:
互動圖:
主要由三部分組成:
adb client: 執行在PC端,傳送adb命令,就相當於新建了客戶端
adb server: 執行在PC端,預設繫結本地TCP埠5037,一方面監聽來自客戶端的命令,另一方面識別並連結安卓裝置實現與daemon之間的通訊
adb daemon: 執行在android裝置端的守護程式,執行來自client發來的adb命令,完成對裝置的操作
3. 常用命令:
dumpsys指令:獲取服務資訊與系統診斷
# 獲取當前app的包名和Activity(頁面名稱)
<1> 點選進入該app
<2> 執行adb shell dumpsys window | findstr mCurrentFocus
adb shell dumpsys cpuinfo # 檢視系統cpu使用情況
adb shell dumpsys meminfo # 檢視系統記憶體使用情況
adb shell dumpsys battery # 檢視系統電池使用情況
pm指令(packages manager):獲取android裝置上的應用資訊
adb shell pm list packages #列出所有的應用
adb shell pm list packages -3 #列出所有的第三方應用
adb shell pm list packages instrumentation #列出所有的測試應用 (Android的官方測試框架是instrumentation)
adb shell pm list packages | findstr xxx #列出所有包含關鍵字xxx的應用包名
am指令(activity manager): 活動管理
adb shell am start -n 包名/activity名 #開啟指定應用的指定頁面
adb shell am force-stop 包名 #停止應用
input指令:模擬使用者行為操作
adb shell input keyevent {keycode} #執行keyevent事件, keycode較多參考官方:https://developer.android.com/reference/android/view/KeyEvent
adb shell input tab x y #點選指定座標(x,y)
adb shell input swip x1 y1 x2 y2 #從(x1,y1)滑動到(x2,y2)
安卓裝置與電腦檔案傳輸指令:
path1:檔案在Android裝置上的路徑
path2: 檔案在PC本地的路徑
adb pull path1 path2 #從Android裝置中匯出檔案到PC端
adb push path2 path1 #將PC上的檔案匯入android裝置中
monkey指令(穩定性測試):
(1) Monkey程式由Android系統自帶的java程式, 在Android檔案系統中的存放路徑是:/system/framework/monkey.jar
(2) Monkey.jar 程式是由一個名為 “monkey” 的Shell指令碼來啟動執行,shell指令碼在 Android 檔案系統中的存放路徑是:/system/bin/monkey
(3) 觸發指令: adb shell monkey {+引數}, 範例如下:
I. adb shell monkey 100 隨機測試100次
II. adb shell monkey -p 包名 100 指定執行軟體100次
III. adb shell monkey -p com.jd.jrapp --ignore-crashes --ignore-timeouts --ignore-security-exceptions -s 100 --throttle 300 -v -v -v 1000 > ./monkey_log.txt
引數說明:
-v 預設級別,僅提供啟動、測試完成和最終結果等少量資訊
-v -v 提供較為詳細的日誌,包括每個傳送到Activity的事件資訊
-v -v -v 提供最詳細的日誌,包括了測試中選中/未選中的Activity資訊
-s 用於指定偽隨機數生成器的seed值
--throttle 用於指定使用者事件的操作間隔時延,單位是毫秒
--ignore-timeouts 忽略超時錯誤
--ignore-crashes 忽略crash
--ignore-security-exceptions忽略許可錯誤
注意:命令中的findstr和grep作用相同均是過濾
區別:findstr用於windows環境命令列,grep用於linux環境命令列 (執行adb shell之後就進入了裝置的安卓核心,即linux環境)
4. 安卓常見問題:
ANR: 系統無響應
可能原因:資料量太大,導致前端頁面各種計算超時
日誌獲取:data/anr
crash: 閃退
可能原因:記憶體不足,版本不相容等
日誌獲取:adb logcat -c # 先清理一下日誌
adb logcat -b crash >error.txt # 再操作閃退步驟後,輸出乾淨的閃退日誌