關(guān)于adb命令你所需要知道的

關(guān)于adb命令你所需要知道的.png

概述

Android Debug Bridge (adb) 是一個(gè)通用命令行工具,是 Android 開(kāi)發(fā)/測(cè)試人員必備工具,關(guān)于adb的詳細(xì)介紹可以查看谷歌 adb 官方中文文檔 Android Debug Bridge, 這里只是總結(jié)了一下常用的命令

文章中涉及的命令說(shuō)明

  • 文章中的命令只針對(duì)于連接一個(gè)設(shè)備的情況,如果連接多個(gè)設(shè)備,需要在 adb shell -s 后面指定設(shè)備序列號(hào), 格式如下所示:
格式:
adb -s 225278f8 shell

獲取設(shè)備序列號(hào):
adb devices
  • <serial number> : 設(shè)備序列號(hào)
  • <package_name> : Apk 的包名
  • <local> : pc 端路徑
  • <remote> : Android 設(shè)備上的路徑
  • <filepath_in_device> : Android 設(shè)備的文件路徑
  • <local_apk_path> : pc 端 apk 的路徑
  • <package_name>/<main_class> : Apk包名 / 啟動(dòng)類(lèi),格式如下所示
格式:
google.architecture.universal/.ActivityMain

打開(kāi)Apk,然后輸入下面命令查看:
adb shell dumpsys window | grep mCurrentFocus

命令總結(jié)

以下所有命令參考谷歌 adb 官方文檔 Android Debug Bridge,列出了經(jīng)常用命令

常用命令

備注 命令
查看連接設(shè)備 adb devices
查看連接設(shè)備列表信息 adb devices -l
指定設(shè)備 adb -s <serial number> shell

上傳文件和下載文件

備注 命令
將電腦上的文件上傳的設(shè)備 adb push <local> <remote>
設(shè)備中的文件下載到電腦 adb pull <remote> <local>

安裝和卸載應(yīng)用

備注 命令
安裝Apk ?adb install <local_apk_path>
安裝Apk 并且授予Apk所有權(quán)限 ?adb install -g <local_apk_path>
覆蓋安裝Apk且保留數(shù)據(jù) ?adb install <local_apk_path>
降級(jí)安裝Apk ?adb install -d <local_apk_path>
卸載Apk ?adb uninstall <package_name>
卸載Apk且保留數(shù)據(jù) adb shell pm uninstall -k <package_name>
靜默安裝應(yīng)用 ?adb shell pm install -t -r <local_apk_path>
卸載所有應(yīng)用(包括系統(tǒng)應(yīng)用) ?adb shell pm uninstall -k --user 0 <package_name>

pm

備注 命令
顯示第三放應(yīng)用 adb shell pm list package -3
顯示系統(tǒng)應(yīng)用 adb shell pm list packages -s
顯示apk文件路徑和包名列表 adb shell pm list packages -f
查看apk路徑 adb shell pm path <package_name>
清除數(shù)據(jù)和緩存 adb shell pm clear <package_name>

dumpsys

備注 命令
查看運(yùn)行Apk的包名 adb shell dumpsys window | grep mCurrentFocus
查看Activity任務(wù)棧 adb shell dumpsys activity activities
查看堆的分配情況 adb shell dumpsys meminfo <package_name>
查看應(yīng)用信息 adb shell dumpsys package <package_name>
獲取設(shè)備顯示屏參數(shù)信息 adb shell dumpsys window displays
清除bugreport信息 adb shell dumpsys batterystats --reset
從bugreport中過(guò)濾關(guān)鍵字信息 adb shell dumpsys batterystats | grep 關(guān)鍵字
進(jìn)入dozeModel deep狀態(tài) adb shell dumpsys deviceidle force-idle
進(jìn)入dozeModel light狀態(tài) adb shell dumpsys deviceidle force-idle light
退出dozeModel adb shell dumpsys deviceidle unforce
重新激活設(shè)備 adb shell dumpsys battery reset
退出充電狀態(tài) adb shell dumpsys battery unplug
禁用doze mode adb shell dumpsys deviceidle disable
adb shell dumpsys deviceidle whitelist

getprop

備注 命令
獲取設(shè)備型號(hào) adb shell getprop ro.product.model
獲取設(shè)備的Android系統(tǒng)版本 adb shell getprop ro.build.version.release

wm

備注 命令
獲取設(shè)備屏幕分辨率 adb shell wm size
獲取設(shè)備屏幕密度(單位:dpi) adb shell wm density

調(diào)試命令

備注 命令
查看應(yīng)用的進(jìn)程 adb shell ps -ef | grep <package_name>
查看內(nèi)存占用情況 adb shell ps | grep <package_name> | awk '{ print $2 }'
查看Activity的啟動(dòng)時(shí)間 ?adb shell am start -W <package_name>/<main_class>
強(qiáng)制關(guān)閉應(yīng)用 ?adb shell am force-stop <package_name>
實(shí)時(shí)查看設(shè)備CPU、內(nèi)存占用等信息 adb shell top
實(shí)時(shí)查看內(nèi)存占用排名前number的應(yīng)用 adb shell top -m <number>
為Apk跑number次monkey測(cè)試 adb shell monkey -v -p <package_name> <number>
獲取設(shè)備的MAC地址 adb shell cat /sys/class/net/wlan0/address
獲取設(shè)備的內(nèi)存占用信息 adb shell cat /proc/meminfo

其他命令

備注 命令
查看日志 adb shell logcat | grep '關(guān)鍵字'
輸出日志到log.txt文件 adb shell logcat | grep '關(guān)鍵字' > log.txt
截取屏幕 ?adb shell screencap -p <filepath_in_device>
錄制屏幕 adb shell screenrecord -p <filepath_in_device>

常見(jiàn)問(wèn)題匯總

列舉一些常見(jiàn)問(wèn)題,后續(xù)會(huì)不斷完善

1. ubuntu 下使用 adb 出現(xiàn) no permissions 問(wèn)題解決方案

運(yùn)行 sudo adb devices 出現(xiàn)下列情況

List of devices attached 
2aca417d    no permissions

如何解決 no permissions?

在未連接 Android 設(shè)備的情況下,運(yùn)行命令 lsusb, 查看一下 ubuntu 下的 usb

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 413c:2113 Dell Computer Corp. 
Bus 001 Device 002: ID 413c:301a Dell Computer Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

連接 Android 設(shè)備, 打開(kāi) usb 調(diào)試模式,運(yùn)行命令 lsusb, 查看一下 ubuntu 下的 usb

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 413c:2113 Dell Computer Corp. 
Bus 001 Device 002: ID 413c:301a Dell Computer Corp. 
Bus 001 Device 055: ID 18d1:4ee7 Google Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

通過(guò)對(duì)比兩個(gè)結(jié)果,可以查看到新連接的 Android 設(shè)備信息,注意其 ID 號(hào),這里是18d1:4ee7

然后進(jìn)入到 /etc/udev/rules.d/ 目錄下,查看是否有 .rules 文件.沒(méi)有則可以自己新建一個(gè)(名字可以隨意取,不能有中文),添加端口信息到文件中

# 打開(kāi)一個(gè)文件
sudo vim 51-android.rules

# 添加端口信息到51-android.rules
SUBSYSTEM=="usb",ATTRS{idVendor}=="18d1",ATTRS{idProduct}=="4ee7",MODE="0666"

這里 18d14ee7 則分別是上一步中查看到的 android 設(shè)備的信息,MODE 表示權(quán)限,完成之后執(zhí)行下面命令

sudo chmod a+rx /etc/udev/rules.d/51-android.rules
sudo service udev restart

最后拔掉 usb 重新連接,然后在運(yùn)行下面命令重啟 adb 服務(wù)

sudo adb kill-server
sudo adb start-server
sudo adb devices

如果上述步驟都操作正確,運(yùn)行 sudo adb devices 如下所示,就可以使用 adb 操作設(shè)備了

List of devices attached 
2aca417d  device

參考文獻(xiàn)

結(jié)語(yǔ)

致力于分享一系列 Android 系統(tǒng)源碼、逆向分析、算法相關(guān)的文章,每篇文章都會(huì)反復(fù)推敲,結(jié)合新的技術(shù),帶來(lái)一些新的思考,如果你同我一樣喜歡 coding,一起來(lái)學(xué)習(xí),期待與你一起成長(zhǎng)

文章列表

Android 10 源碼系列

工具系列

逆向系列

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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