天天看點

adb 常用指令

adb 基礎指令

adb 基礎文法

adb [-d|-e|-s <serialNumber>] <command>
      

​指令行參數​

  • ​-d​

    ​:指定目前唯一通過 ​

    ​USB 連接配接​

    ​ 的 Android 裝置為指令目标
  • ​-e​

    ​:指定目前唯一運作的 ​

    ​模拟器為​

    ​ 指令目标
  • ​-s <serialNumber>​

    ​:指定相應 serialNumber 号的裝置/模拟器為指令目标

​重點​

  • 如果隻有連了​

    ​一台​

    ​裝置,那就不需要 -d、-e、-s 參數了
  • 在多個裝置/模拟器連接配接的情況下較常用的是 ​

    ​-s <serialNumber> ​

    ​參數,​

    ​serialNumber 為裝置到序列号​

    ​,裝置連接配接上電腦後可以通過 ​

    ​adb devices​

    ​ 指令擷取
  • serialNumber 可能是序列号也可能是 IP

檢視目前 adb 連接配接上的裝置清單

adb devices
      
adb 常用指令

殺掉 adb 服務

adb kill-server
      

開啟 adb 服務

adb start-server
      

adb 安裝 app

adb install 包位址
      

adb 解除安裝 app

adb uninstall 包名
      

把檔案從手機中複制到電腦

adb pull <手機路徑> <電腦路徑>
      

把檔案從電腦複制到手機上

adb push <電腦路徑> <手機路徑>
      

以 root 權限運作 adb

adb root
      

存在一些需要 root 權限才能執行的指令

取消 root 權限

adb unroot
      

指定 adb server 的網絡端口

# 預設端口為 5037
adb -P <port> start-server
      

指定裝置 ID

adb -s 09091JEC212986 logcat -v time
      

檢視手機裝置資訊

檢視手機型号

adb shell getprop ro.product.model
      
adb 常用指令

檢視電池狀況

adb shell dumpsys battery
      
adb 常用指令

其中 scale 代表最大電量,level 代表目前電量。上面的輸出表示還剩下 68% 的電量。

檢視分辨率

adb shell wm size
      
adb 常用指令

檢視螢幕密度(ppi)

adb shell wm density
      
adb 常用指令

檢視顯示屏參數

adb shell dumpsys window displays
      

檢視android_id

adb shell settings get secure android_id
      

檢視 Android 系統版本

adb shell getprop ro.build.version.release
      
adb 常用指令

檢視IP位址,網卡相關

adb shell ifconfig

adb shell ifconfig wlan0  # 指定網卡
      
adb 常用指令

檢視Mac位址

adb shell cat /sys/class/net/網卡/address

adb shell cat /sys/class/net/eth0/address
adb shell cat /sys/class/net/wlan0/address
      

或者

adb shell netcfg
      

或者直接手機上看

檢視CPU資訊

adb shell cat /proc/cpuinfo
      
adb 常用指令

檢視記憶體資訊

adb shell cat /proc/meminfo
      

檢視硬體與系統屬性

檢視所有屬性

adb shell getprop
      

單獨檢視屬性

adb shell getprop <屬性名>
      

常用屬性清單

屬性名 含義
ro.build.version.sdk SDK 版本
ro.build.version.release Android 系統版本
ro.build.version.security_patch Android 安全更新檔程式級别
ro.product.model 型号
ro.product.brand 品牌
ro.product.name 裝置名
ro.product.board 處理器型号
ro.product.cpu.abilist CPU 支援的 abi 清單[節注一]
persist.sys.isUsbOtgEnabled 是否支援 OTG
dalvik.vm.heapsize 每個應用程式的記憶體上限
ro.sf.lcd_density 螢幕密度

應用管理

檢視應用清單

adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]

      

指令行參數清單

參數 顯示清單
所有應用
-f 顯示應用關聯的 apk 檔案
-d 隻顯示 disabled 的應用
-e 隻顯示 enabled 的應用
-s 隻顯示系統應用
-3 隻顯示第三方應用
-i 顯示應用的 installer
-u 包含已解除安裝應用
包名包含的字元串

檢視系統應用

adb shell pm list packages -s
      

檢視第三方應用

adb shell pm list packages -3
      

檢視某個包名中包含指定字元的應用

# 比如要檢視包名包含字元串 java 的應用清單 
adb shell pm list packages java 

# 也可以使用 grep 來過濾
adb shell pm list packages | grep java 
      

安裝應用

adb install [-lrtsdg] <path_to_apk>
      
-l 将應用安裝到保護目錄 /mnt/asec
-r 允許覆寫安裝
-t 允許安裝 AndroidManifest.xml 裡 application 指定android:testOnly="true"的應用
将應用安裝到 sdcard
允許降級覆寫安裝
-g 授予所有運作時權限

解除安裝應用

adb uninstall [-k] <packagename>
      
  • 表示應用的​

    ​包名​

  • -k 參數可選,表示解除安裝應用​

    ​但保留​

    ​資料和緩存目錄。

清除應用資料和緩存

adb shell pm clear <packagename>
      

這條指令的效果相當于在設定裡的應用資訊界面點選了​

​清除緩存​

​和​

​清除資料​

檢視目前運作的 APP 的頁面 Activity 資訊

兩條指令差不多效果

adb shell "dumpsys window | grep mCurrentFocus"

adb shell "dumpsys activity activities | grep mFocusedActivity"
      

檢視某個包的版本号

adb shell dumpsys package 包名 | findstr versionName
      

檢視應用安裝路徑

adb shell pm path <PACKAGE>
      

殺死一個應用程序

adb shell kill [pid]
      

不過一般先要獲得 PID

# 檢視所有程序資訊的指令
adb shell ps

# 可以通過 grep 篩選程序名稱來查 PID
adb shell "ps |grep water"

# 結束程序
adb shell kill pid
      

日志相關

Android 系統的日志分為兩部分

  1. 底層的 Linux 核心日志輸出到 ​

    ​/proc/kmsg​

  2. Android 的日志輸出到 ​

    ​/dev/log​

adb logcat [<option>] ... [<filter-spec>] ...
      

按優先級過濾日志

Android 的日志分為如下幾個優先級

  • V —— Verbose(最低,輸出得最多)
  • D —— Debug
  • I —— Info
  • W —— Warning
  • E —— Error
  • F —— Fatal
  • S —— Silent(最高,啥也不輸出)
adb logcat *:W
      
  • 該指令會将 Warning、Error、Fatal 和 Silent 日志輸出。
  • 記得固定寫法哦 *:W

指定日志格式

adb logcat -v <format>
      

brief

<priority>/<tag>(<pid>): <message>

# 示例

adb logcat -v brief
D/AF::TrackHandle(  983): OpPlayAudio: track:14431 usage:13 muted
      

process

──  (<tag>)
<priority>(<pid>) <message> 

# 示例 

adb logcat -v process

──  (MAXHUB-PostBonjourInfoRunnable)
D( 1785) Disconnected process message: 10, size: 0 (HeadsetStateMachine)
      

tag

<priority>/<tag>: <message>  

# 示例 

adb logcat -v tag
D/HeadsetStateMachine: Disconnected process message: 10, size: 0
      

raw

<message>

# 示例

Disconnected process message: 10, size: 0
      

time

<datetime> <priority>/<tag>(<pid>): <message>

# 示例

08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
      

threadtime

<datetime> <pid> <tid> <priority> <tag>: <message> 

# 示例

08-28 22:39:39.974 1785 1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0
      

long

[ <datetime> <pid>:<tid> <priority>/<tag> ]
<message>

# 示例

[ 08-28 22:39:39.974  1785: 1832 D/HeadsetStateMachine ]
Disconnected process message: 10, size: 0
      

清空日志

adb logcat -c
      

檢視核心日志

adb shell dmesg
      

模拟按鍵輸入

adb 常用指令
input [<source>] <command> [<arg>...]
      

實體鍵

# 電源鍵
adb shell input keyevent 26

# 菜單鍵
adb shell input keyevent 82

# HOME 鍵
adb shell input keyevent 3

# 傳回鍵
adb shell input keyevent 4 

# 音量+
adb shell input keyevent 24 

# 音量-
adb shell input keyevent 25 

# 靜音
adb shell input keyevent 164
      

媒體控制

# 播放/暫停
adb shell input keyevent 85 

# 停止播放
adb shell input keyevent 86 

# 播放下一首
adb shell input keyevent 87 

# 播放上一首
adb shell input keyevent 88 

# 恢複播放
adb shell input keyevent 126 

# 暫停播放
adb shell input keyevent 127 
      

點亮/熄滅螢幕

# 點亮螢幕
adb shell input keyevent 224 

# 熄滅螢幕
adb shell input keyevent 223 
      

觸擊螢幕

​手機左上角坐标為 0 0 ​

# x,y為坐标位置
adb shell input tap <X> <Y> 
      

滑動螢幕

四個參數:起始點 x 坐标 起始點 y 坐标 結束點 x 坐标 結束點 y 坐标

# 向上滑動
adb shell input swipe 300 1000 300 500 

# 向下滑動
adb shell input swipe 300 100 300 1000 

# 向左滑動
adb shell input swipe 1000 500 200 500 

# 向右滑動
adb shell input swipe 200 500 1000 500 
      

其他實用功能

螢幕截圖

adb exec-out screencap -p > sc.png
      
  • 截圖儲存到電腦執行該指令的目錄下
  • 如果指定檔案名以 ​

    ​.png​

    ​ 結尾時可以省略 ​

    ​-p​

    ​ 參數

​注意​

如果 adb 版本較老,無法使用 ​

​exec-out​

​ 指令,建議更新 adb 版本

也可以用下面的步驟來完成

# 先截圖儲存到裝置裡
adb shell screencap -p /sdcard/sc.png 

# 然後将 png 檔案導出到電腦
adb pull /sdcard/sc.png 
      

錄制螢幕

# 錄制螢幕以 mp4 格式儲存到 /sdcard
adb shell screenrecord /sdcard/filename.mp4 

# 導出到電腦
adb pull /sdcard/filename.mp4 
      

需要停止時按 Ctrl-C,預設錄制時間和最長錄制時間都是 180 秒

檢視wifi密碼

adb shell cat /data/misc/wifi/*.conf
      

删除系統預設APP

找到要删除的包名

adb shell pm list packages -s 
      

擷取包名的位址

adb shell pm path 包名 
      

【如:adb shell pm path com.seewo.rainbow.pro】

擷取root權限

adb root adb remount
      

挂載系統讀寫權限

adb shell rm 包名位址
      

删除包

adb shell rm -r /data/app/com.seewo.rainbow.pro-1
      

重新開機

adb reboot