Android ADB 常用命令

[TOC]

日志命令

adb logcat 查看日志

詳細(xì)內(nèi)容可參見
ADB Usage Complete / ADB 用法大全
官方文檔Listing of logcat Command Options
他人整合 http://jiongbull.com/2016/03/17/adb%E5%91%BD%E4%BB%A4/
更多的 systemdump http://www.itdecent.cn/p/811741a2ad97

抓取崩潰日志

# 最近崩潰的棧日志,這個(gè)用于快速定位問題
adb shell dumpsys dropbox --print data_app_crash
# 復(fù)現(xiàn)bug 完整日志,先清空日志
adb logcat -c
# 存儲(chǔ)在當(dāng)前目錄的 crash.log 中
adb logcat -v time > crash.log
# linux 系統(tǒng)可以使用 tee 一邊輸出一邊記錄
adb logcat -v time | tee crash.log

抓取 anr 日志

## root 過的設(shè)備
adb shell
cat /data/anr/traces.txt > /mnt/sdcard/0/traces.txt
exit
adb pull /mnt/sdcard/0/traces.txt .
# 注意某些機(jī)型可能文件名改過,需要自行判斷

## 未root
# windows 系統(tǒng) 寫入文件 bugreport.log
adb shell bugreport > bugreport.log
# linux 系統(tǒng)可以使用 tee 一邊輸出一邊記錄
adb shell bugreport | tee bugreport.log

adb wifi鏈接調(diào)試

# 開啟 tcpip 調(diào)試
adb tcpip 5555
# 主機(jī)執(zhí)行
adb connect [手機(jī)IP]

應(yīng)用相關(guān)

查看應(yīng)用列表

adb shell pm list package
# has root
adb shell ls /data/data/

adb啟動(dòng)/停止 應(yīng)用程序

adb shell am start -n [packageName/StartActivity]
adb shell am force-stop [packageName]

端口映射

# 顯示所有(PC —> DEVICE)映射的端口連接列表
adb forward —list
# 映射端口連接(PC —> DEVICE)
adb forward (local) (remote)
adb forward tcp:6100 tcp:7100
# 映射端口連接,但是如果local已經(jīng)映射了就會(huì)失敗
adb forward —no-rebind (local) (remote)
adb forward --no-rebind tcp:6100 tcp:7100
# 移除指定的映射端口連接
adb forward —remove tcp:6100
# 移除所有的映射端口連接
adb forward —remove-all
# 顯示所有來自設(shè)備的(DEVICE —> PC)映射的端口連接列表
adb reverse —list
# 反向映射端口連接(DEVICE —> PC)
adb reverse (remote) (local)
adb reverse tcp:7000 tcp:5000
# 如果local已經(jīng)映射了就會(huì)失敗
adb reverse —no-rebind (remote) (local)
adb reverse --no-rebind tcp:7000 tcp:5000
# 移除指定的反向映射端口連接
adb reverse —remove tcp:7000
adb reverse —remove-all

應(yīng)用安裝卸載

# 獲取apk的packagename 和 classname
aapt d badging <apkfile>
# 安裝apk
adb install <apkfile>
# 保留數(shù)據(jù)和緩存文件,重新安裝apk,
adb install -r <apkfile>
# 安裝apk到sd卡
adb install -s <apkfile>
# 卸載app
adb uninstall <package>
# 卸載app但保留數(shù)據(jù)和緩存文件
adb uninstall -k <package>
# 同時(shí)安裝包多個(gè)apk到設(shè)備上
adb install-multiple

adb install 參數(shù)

  • -l 鎖定應(yīng)用
  • -r 替換已存在的應(yīng)用
  • -t 允許安裝測(cè)試包
  • -s 安裝到sd卡中
  • -d 可以安裝低版本安裝包
  • -p 安裝部分應(yīng)用
  • -g 授權(quán)所有運(yùn)行時(shí)權(quán)限

應(yīng)用狀態(tài)查看

# 查看進(jìn)程列表
adb shell ps
# 查看指定進(jìn)程狀態(tài)
adb shell ps -x [PID]
# 查看后臺(tái)services信息
adb shell service list
# 查看IO內(nèi)存分區(qū)
adb shell cat /proc/iomem

調(diào)試查看

列出所有擁有JDWP端口進(jìn)程的進(jìn)程號(hào)

adb jdwp

查看系統(tǒng)性能

adb shell am start -W 包名/Activity

文件操作

# 查看所有存儲(chǔ)設(shè)備名
adb shell ls mnt
# 從本地復(fù)制文件到設(shè)備
adb push <local> <remote>
# 從設(shè)備復(fù)制文件到本地
adb pull <remote>  <local>
# 列出目錄下的文件和文件夾,等同于dos中的dir命令
adb shell ls
# 進(jìn)入文件夾,等同于dos中的cd 命令
adb shell cd <folder>
# 重命名文件
adb shell rename path/oldfilename path/newfilename
# 刪除system/avi.apk
adb shell rm /system/avi.apk
# 刪除文件夾及其下面所有文件
adb shell rm -r <folder>
# 移動(dòng)文件
adb shell mv path/file newpath/file
# 設(shè)置文件權(quán)限
adb shell chmod 777 [filePath]
# 新建文件夾
adb shell mkdir -d path/foldelname

adb sync

把Android設(shè)備上/system/data目錄中與主機(jī)目錄中不一致的內(nèi)容同步到主機(jī)上。
使用前需要設(shè)置主機(jī)目錄地址的環(huán)境變量。
adb sync(未設(shè)置環(huán)境變量)

D:\Code\Git>adb sync
adb: Product directory not specified; use -p or define ANDROID_PRODUCT_OUT

set ANDROID_PRODUCT_OUT = (PATH)

D:\Code\Git>set ANDROID_PRODUCT_OUT = D:\Data\Android

adb sync(已設(shè)置環(huán)境變量)

D:\Code\Git>adb sync
syncing /system...
push: D:\Data\Android\system/app/WAPPushManager.apk -> /system/app/WAPPushManager.apk

文本操作

# 查看文件內(nèi)容
adb shell cat <file>
# 查看文件的頭10行
adb shell head -n 10 <file>
# 查看文件的尾10行
adb shell tail -n 10 <file>

root權(quán)限操作

  • 此操作需要root后的手機(jī)才可以執(zhí)行
# 嘗試開啟root權(quán)限,adb連接會(huì)重置 成功會(huì)提示 restarting adbd as root
adb root
# 關(guān)閉root權(quán)限
adb unroot
# 重新掛載系統(tǒng)分區(qū),使系統(tǒng)分區(qū)重新可寫 成功提示 remount succeeded
adb remount
# 重啟設(shè)備,進(jìn)入recovery程序的sideload模式,需要root權(quán)限
adb reboot sideload

這樣就可以操作Android系統(tǒng)文件

調(diào)試環(huán)境下的dm-verity檢查

解鎖 system 分區(qū)用這個(gè)

關(guān)閉在調(diào)試環(huán)境下的dm-verity檢查
adb disable-verity
啟用在調(diào)試環(huán)境下的dm-verity檢查
adb enable-verity

系統(tǒng)項(xiàng)目

設(shè)備信息

# 完整設(shè)備信息
adb shell cat /system/build.prop
# 廠商信息
adb shell cat /system/build.prop | grep ro.product

環(huán)境變量

ADB_TRACE 指定打印調(diào)試信息,可以設(shè)置為以下列表中的值,用逗號(hào)隔開

adb、sockets、packets、rwx、usb、sync、sysdeps、transport和jdwp

ANDROID_SERIAL

指定要連接的設(shè)備,如果通過-s指定了則該變量不起作用

ANDROID_LOG_TAGS

在使用logcat的情況下,只有這些標(biāo)簽的調(diào)試信息才會(huì)打印

dumpsys

adb shell dumpsys wifi
adb shell dumpsys cpuinfo

可以dump當(dāng)前運(yùn)行的內(nèi)容包括

編號(hào) 參數(shù)
1 SurfaceFlinger
2 accessibility
3 account
4 activity
5 alarm
6 appwidget
7 audio
8 backup
9 battery
10 batteryinfo
11 bluetooth
12 bluetooth_a2dp
13 clipboard
14 connectivity
15 content
16 cpuinfo
17 device_policy
18 devicestoragemonitor
19 diskstats
20 dropbox
21 entropy
22 ethernet
23 hardware
24 input_method
25 iphonesubinfo
26 isms
27 keybar
28 location
29 media.audio_flinger
30 media.audio_policy
31 media.camera
32 media.player
33 meminfo
34 mount
35 netsta

設(shè)備狀態(tài)信息

# 查看設(shè)備cpu和內(nèi)存占用情況
adb shell top
# 查看占用內(nèi)存前6的app
adb shell top -m 6
# 刷新一次內(nèi)存信息,然后返回
adb shell top -n 1
# MAC地址
adb shell cat /sys/class/net/wlan0/address
# CPU序列號(hào)
adb shell cat /proc/cpuinfo

備份

# 把設(shè)備的數(shù)據(jù)歸檔寫入文件中
adb backup
adb backup -f backup.ab -all
  • -f 如果沒有這個(gè)標(biāo)識(shí),數(shù)據(jù)將會(huì)寫入到當(dāng)前目錄中的backup.ab文件中
  • -apk|-noapk 啟用|禁用備份.apk文件自己,默認(rèn)是noapk
  • -obb|-noobb 啟用|禁用備份應(yīng)用關(guān)聯(lián)的apk擴(kuò)展,默認(rèn)是noobb
  • -shared|-noshared 啟用|禁用備份設(shè)備共享存儲(chǔ)/SD中的內(nèi)容,默認(rèn)是noshared
  • -all 備份所有安裝的應(yīng)用
  • -system|-nosystem 決定-all是否包含系統(tǒng)應(yīng)用,默認(rèn)是包含系統(tǒng)應(yīng)用
  • packages... 將要備份的應(yīng)用列表,如果設(shè)置了-all或-shared標(biāo)識(shí),那么這個(gè)參數(shù)將是可選的

從歸檔的備份文件中恢復(fù)設(shè)備內(nèi)容

adb restore
adb restore backup.ab

設(shè)備操作

# 返回所有應(yīng)該包含在錯(cuò)誤報(bào)告中的設(shè)備信息
adb bugreport
# 重啟
adb reboot
# 重啟刷機(jī)模式
adb reboot bootloader
# 重啟到恢復(fù)模式
adb reboot recovery
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容