1. 程式人生 > >Android adb用法

Android adb用法


 
  

引言

本文基於Android官方文件, 以及個人工作的使用經驗, 總結下adb的常用用法, 備忘.

1, adb簡介

adb全名Andorid Debug Bridge. 顧名思義, 這是一個Debug工具.
然而, 為何稱之為Bridge呢? 因為adb是一個標準的CS結構的工具, 是要連線開發電腦和你的除錯手機的.包含如下幾個部分:

  • Client端, 執行在開發機器中, 即你的開發PC機. 用來發送adb命令.
  • Deamon守護程序, 執行在除錯裝置中, 即的除錯手機或模擬器.
  • Server端, 作為一個後臺程序執行在開發機器中, 即你的開發PC機. 用來管理PC中的Client端和手機的Deamon之間的通訊.

2, 常用用法

2.1 adb devices

列舉當前連線的除錯裝置

$ adb devices
List of devices attached
DU2SSE1467010378    device

2.2 adb logcat

列印log資訊

指令 說明 備註
adb logcat 列印log /
adb logcat -c 清除手機的log buffer 有些手機許可權控制, 不支援.
adb logcat -b <buffer> 列印指定buffer的log資訊 buffer有: main(主log區,預設), events(事件相關的log), radio(射頻, telephony相關的log)
adb logcat -v <format> 格式化輸出log 常用的用adb logcat -v time顯示時間
adb logcat -f <filename> 輸出log到指定檔案

2.3 adb install/uninstall

安裝解除安裝apk

// 安裝apk時指定apk file路徑
$ adb install ~/Downloads/mobileqq_android.apk
[100%] /data/local/tmp/mobileqq_android.apk
    pkg: /data/local/tmp/mobileqq_android.apk
Success

// 解除安裝apk時指定包名
$ adb uninstall com.tencent.mobileqq
Success

2.4 adb pull/push

除錯裝置和開發PC之間拷貝檔案.

// 拷貝本地檔案到除錯裝置中
$ adb push ~/temp/GithubApp.trace /sdcard/
[100%] /sdcard/GithubApp.trace

// 從除錯裝置中拷貝檔案到本地
$ adb pull /sdcard/GithubApp.trace ~/
[100%] /sdcard/GithubApp.trace

2.5 adb start/kill-server

啟動/殺死adb簡介中提到的Server端程序.

由於adb並不穩定, 有時候莫名的問題掉線時, 可以先kill-server, 然後start-server來確保Server程序啟動. 往往可以解決問題.

2.5 adb shell

進入除錯裝置的shell介面, 此時可以使用除錯裝置中的很多指令. 下文高階用法中很多就是.

$ adb shell
[email protected]:/ $

3, 高階用法

3.1 adb connect/disconnect

通過wifi進行遠端連線手機進行除錯的.
https://developer.android.com/studio/command-line/adb.html#wireless

需先連上usb模式, 開啟遠端除錯模式:
$ adb tcpip 5555

3.2 adb shell am

am即activity manager.
該命令用來執行一些系統動作, 例如啟動指定activity, 結束程序, 傳送廣播, 更改螢幕屬性等. 除錯利器.

指令 說明 備註
start <Intent> 根據intent指向啟動Activity Intent可以是顯示的指向activity, 也可以是ACTION方式, 並且可以新增flag, data等引數資訊.
startservice <Intent> 啟動Service 可以新增flag, data等引數資訊.
broadcast <Intent> 傳送廣播 可以新增flag, data等引數資訊.
monitor 啟動一個Crash和ANR的監聽器 如有Crash或ANR會在控制檯輸出相關資訊.
force-stop <Package> 強制停止該包相關的一切 傳入package name.
kill <Package> 殺死該包相關的所有程序 傳入package name.
kill-all 殺死所有後臺程序
display-size WxH 改變顯示的解析度 例如adb shell am display-size 1280x720, 手機可能不支援.
display-density <dpi> 改變顯示的density 例如adb shell am display-density 320, 手機可能不支援.

3.3 adb shell pm

pm即package manager.
用來執行package相關的操作, 例如安裝解除安裝, 查詢系統的安裝包等.

指令 說明 備註
list packages <Filter> 列出滿足filter條件的所有包
list permissions <Group> 列出該Group的所有許可權
list features 檢視系統支援哪些feature 例如藍芽, wifi, 攝像頭等.
install <Path>/uninstall <Package> 安裝解除安裝
clear <Package> 清除應用資料

3.4 adb shell screencap

截圖, 比截圖快捷鍵更加方便快捷.

$ adb shell screencap /sdcard/screen.png

$ adb pull /sdcard/screen.png ~/temp
[100%] /sdcard/screen.png

3.5 adb shell screenrecord

錄屏, 做demo的話, 可以很方便的用這個命名錄制視訊, 然後藉助工具將其轉換成gif圖, 超讚. 如下:

screenrecord gif

Android4.4及以上系統可用.

2.5 adb shell dumpsys

強大的dump工具, 可以輸出很多系統資訊. 例如window, activity, task/back stack資訊, wifi資訊等.

探索Activity之launchMode探索Activity之啟動Intent flag和Affinity就是用adb shell dumpsys activity來輸出task資訊的.

常用dumpsys:

指令 說明 備註 細分引數
activity 輸出app元件相關資訊 還可以用細分引數獲得單項內容, 下同. 例如adb shell dumpsys activity activities來獲取activity task/back stack資訊. activites, service, providers, intents, broadcasts, processes
alarm 輸出當前系統的alarm資訊 / /
cpuinfo 輸出當前的CPU使用情況 / /
diskstats 輸出當前的磁碟使用狀態 / /
batterystats 電池使用資訊 / /
package package相關資訊, 相當於pm功能的集合 輸出諸如libs, features, packages等資訊 /
meminfo 輸出每個App的記憶體使用和系統記憶體狀態 可以指定包名, 例如adb shell dumpsys meminfo com.anly.githubapp /
window 輸出當前視窗相關資訊 / policy, animator, tokens, windows


作者:anly_jun
連結:https://www.jianshu.com/p/5980c8c282ef
來源:簡書