adb 基礎指令
adb 基礎文法
adb [-d|-e|-s <serialNumber>] <command>
指令行參數
-
:指定目前唯一通過 -d
的 Android 裝置為指令目标USB 連接配接
-
:指定目前唯一運作的 -e
指令目标模拟器為
-
:指定相應 serialNumber 号的裝置/模拟器為指令目标-s <serialNumber>
重點
- 如果隻有連了
裝置,那就不需要 -d、-e、-s 參數了一台
- 在多個裝置/模拟器連接配接的情況下較常用的是
參數,-s <serialNumber>
,裝置連接配接上電腦後可以通過 serialNumber 為裝置到序列号
指令擷取adb devices
- serialNumber 可能是序列号也可能是 IP
檢視目前 adb 連接配接上的裝置清單
adb devices
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SZkZTZ3IjZmBDM2ImY1YmNhhDZyYWYyE2YlFTZjBTOw8CXzEzLcdDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)
殺掉 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 shell dumpsys battery
其中 scale 代表最大電量,level 代表目前電量。上面的輸出表示還剩下 68% 的電量。
檢視分辨率
adb shell wm size
檢視螢幕密度(ppi)
adb shell wm density
檢視顯示屏參數
adb shell dumpsys window displays
檢視android_id
adb shell settings get secure android_id
檢視 Android 系統版本
adb shell getprop ro.build.version.release
檢視IP位址,網卡相關
adb shell ifconfig
adb shell ifconfig wlan0 # 指定網卡
檢視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 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 系統的日志分為兩部分
- 底層的 Linux 核心日志輸出到
/proc/kmsg
- 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
模拟按鍵輸入
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