版權歸作者所有,如有轉發,請注明文章出處:https://cyrus-studio.github.io/blog/
基礎adb命令
# 重啟adb
adb kill-server# 查看已連接的設備
adb devices# 進入命令行
adb shell# 使用 -s 參數來指定設備
adb -s <設備序列號> shell# 顯示日志
adb logcat
獲取 API Level
進入 adb shell ,執行下面命令獲取當前 Android 系統的 API Level(即 SDK 版本):
getprop ro.build.version.sdk
以下是 Android 版本與 API Level 的對應表(截至 Android 15):
Android 版本 | API Level | 代號 | 發布時間 |
---|---|---|---|
Android 15 | 35 | Vanilla Ice Cream | 2024年9月 |
Android 14 | 34 | Upside Down Cake | 2023年10月 |
Android 13 | 33 | Tiramisu | 2022年8月 |
Android 12L | 32 | 2022年3月 | |
Android 12 | 31 | Snow Cone | 2021年10月 |
Android 11 | 30 | Red Velvet Cake | 2020年9月 |
Android 10 | 29 | Q | 2019年9月 |
Android 9 | 28 | Pie | 2018年8月 |
Android 8.1 | 27 | Oreo | 2017年12月 |
Android 8.0 | 26 | Oreo | 2017年8月 |
Android 7.1 | 25 | Nougat | 2016年10月 |
Android 7.0 | 24 | Nougat | 2016年8月 |
Android 6.0 | 23 | Marshmallow | 2015年10月 |
Android 5.1 | 22 | Lollipop | 2015年3月 |
Android 5.0 | 21 | Lollipop | 2014年11月 |
獲取 apk 安裝路徑
獲取指定包名的 APK 路徑
adb shell pm path com.shizhuang.duapppackage:/data/app/com.shizhuang.duapp-fTxemmnM8l6298xbBELksQ==/base.apk
將 APK 文件拉取到本地
adb pull /data/app/com.shizhuang.duapp-fTxemmnM8l6298xbBELksQ==/base.apk
獲取 Activity 信息
進入 adb shell
# 獲取設備上當前運行的 Activity
dumpsys activity activities | grep "mResumedActivity"# 獲取活動棧中的所有 Activity,并從中提取出最近的 5 個 Activity
dumpsys activity activities | grep "Hist #" | head -n 5
獲取進程信息
# 顯示當前系統中正在運行的進程信息、CPU、內存使用率等
top# 列出當前所有進程
ps -A# 列出名稱包含 fs 的進程
ps -A | grep fs# 獲取 1234 端口進程的 pid
lsof | grep 1234# 根據包名獲取 pid
pidof com.shizhuang.duapp# 查看進程狀態(如果 TracerPid>0 表示被調試狀態,TracerPid 就是跟蹤調試的 進程id)
cat /proc/pid/status
進程管理
# 停止指定進程
kill pid# 強制停止指定進程
kill -9 pid# 暫停進程
kill -19 pid# 繼續進程
kill -18 pid
文件管理
# 拉取文件/目錄到本地
adb pull /data/app/com.shizhuang.duapp-fTxemmnM8l6298xbBELksQ== D:\temp# 使用cat命令查看文件的內容
cat filename.txt# 當目錄不存在自動創建目錄
mkdir -p /sdcard/dump_dex# 復制文件(目錄必須存在)
cp /data/data/com.shizhuang.duapp/8681372.dex /sdcard/dump_dex# 復制文件并自動創建目錄
mkdir -p /sdcard/dump_dex && cp /data/data/com.shizhuang.duapp/8681372.dex /sdcard/dump_dex/# 移動文件
mv /data/data/com.shizhuang.duapp/8681372.dex /sdcard/dump_dex
查找文件/目錄
查找 /data 路徑下所有包含 com.cyrus.example 的文件或目錄
find /data -iname '*com.cyrus.example*'
查看文件詳細信息
通過 adb shell 進入命令行通過 ls -alh 查看當前路徑下所有文件。
wayne:/sdcard # ls -alh
total 32M
drwxrwx--x 15 root sdcard_rw 3.4K 2024-09-23 17:52 .
drwx--x--x 3 root sdcard_rw 3.4K 2024-09-16 18:43 ..
-rw-rw---- 1 root sdcard_rw 88 2024-09-18 12:03 .thumbcache_idx_001
drwxrwx--x 2 root sdcard_rw 3.4K 2024-09-16 18:43 Alarms
drwxrwx--x 5 root sdcard_rw 3.4K 2024-09-18 00:25 Android
通過 stat 命令查看更加詳細的文件信息,包括訪問時間、修改時間、文件類型和 inode 號等。
wayne:/sdcard # stat /sdcard/AndroidFile: /sdcard/AndroidSize: 3488 Blocks: 7 IO Blocks: 512 directory
Device: 1ch/28d Inode: 2999 Links: 5
Access: (0771/drwxrwx--x) Uid: ( 0/ root) Gid: ( 1015/sdcard_rw)
Access: 2024-09-16 18:43:38.453334673 +0800
Modify: 2024-09-18 00:25:03.481711645 +0800
Change: 2024-09-18 00:25:03.481711645 +0800
通過 file 命令查看文件類型
wayne:/sdcard # file Magisk-v27.0.apk
Magisk-v27.0.apk: Zip archive data
head 用于查看文本文件的前幾行內容,默認是前 10 行。
wayne:/sdcard # head /proc/cpuinfo
Processor : AArch64 Processor rev 4 (aarch64)
processor : 0
BogoMIPS : 38.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x801
CPU revision : 4
-n <行數>:指定要顯示的行數。
wayne:/sdcard # head -n 5 /system/build.prop# begin common build properties
# autogenerated by build/make/tools/buildinfo_common.sh
ro.system.build.date=Mon Sep 16 18:43:25 CST 2024
ro.system.build.date.utc=1726483405
編輯文件
編輯文件
vim a.log
如果文件不存在,vim 會創建一個新的。
打開后,你默認處于 “普通模式” ,此時按:
i
此時屏幕左下角會顯示 – INSERT --,表示你現在可以開始輸入內容。
按下 Esc 鍵即可退出插入模式,回到普通模式。
在普通模式下,輸入以下命令退出 vim
:wq ? # 保存并退出
:q! ? # 不保存直接退出
其他常用命令:
操作 | 命令(普通模式) |
---|---|
插入(光標前) | i |
插入(新行) | o |
刪除整行 | dd |
撤銷 | u |
保存但不退出 | :w + Enter |
不保存強制退出 | :q! + Enter |
移動光標上下左右 | 使用方向鍵或 h j k l |
截圖
# 截圖
adb shell screencap /sdcard/screenshot.png
# 將截圖從設備復制到電腦
adb pull /sdcard/screenshot.png
# 刪除設備中的截圖文件
adb shell rm /sdcard/screenshot.png