Android 调试桥 (adb)

本文详细介绍了Android调试桥(adb)的使用,包括基本命令语法、设备连接管理、应用管理、文件管理和日志查看等。重点讲解了如何安装、卸载应用,查看应用信息,以及设备的电池状况、屏幕分辨率等。此外,还提到了adb的实用功能,如截图、录屏和设备重启。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 调试桥 (adb)

1- 基本用法


1.1- 命令语法

adb 命令的基本语法如下:

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

如果只有一个设备/模拟器连接时,可以省略掉 [-d|-e|-s ] 这一部分,直接使用 adb 。

如果有多个设备/模拟器连接,则需要为命令指定目标设备。

参数含义
-d指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e指定当前唯一运行的模拟器为命令目标
-s <serialNumber>指定相应 serialNumber 号的设备/模拟器为命令目标

在多个设备/模拟器连接的情况下较常用的是 -s 参数,serialNumber 可以通过 adb devices 命令获取

1.2- 启动/停止

启动 adb server 命令:

adb start-server

(一般无需手动执行此命令,在运行 adb 命令时若发现 adb server 没有启动会自动调起。)

停止 adb server 命令:

adb kill-server

1.3- 查看 adb 版本

adb version

示例输出:

apple@fenglolodeMacBook-Pro ~ % adb devices -l
List of devices attached
8b112f28               device usb:336658432X product:virgo model:MI_NOTE_LTE device:virgo transport_id:3

1.4- 以 root 权限运行 adbd

adb 的运行原理是 PC 端的 adb server 与手机端的守护进程 adbd 建立连接,然后 PC 端的 adb client 通过 adb server 转发命令,adbd 接收命令后解析运行。

所以如果 adbd 以普通权限执行,有些需要 root 权限才能执行的命令无法直接用 adb xxx 执行。这时可以 adb shell 然后 su 后执行命令,也可以让 adbd 以 root 权限执行,这个就能随意执行高权限命令了。

命令:

adb root

正常输出:

restarting adbd as root

现在再运行 adb shell,看看命令行提示符是不是变成 # 了?

有些手机 root 后也无法通过 adb root 命令让 adbd 以 root 权限执行,比如三星的部分机型,会提示 adbd cannot run as root in production builds,此时可以先安装 adbd Insecure,然后 adb root 试试。

相应地,如果要恢复 adbd 为非 root 权限的话,可以使用 adb unroot 命令。

1.5- 指定 adb server 的网络端口
命令:

adb -P <port> start-server

默认端口为 5037。


2- 设备连接管理


2.1- 查询已连接设备/模拟器

命令:

adb devices

输出示例:

List of devices attached
cf264b8f	device
emulator-5554	device
10.129.164.6:5555	device

输出格式为 [serialNumber] [state],serialNumber 即我们常说的 SN,state 有如下几种:

offline —— 表示设备未连接成功或无响应。

device —— 设备已连接。注意这个状态并不能标识 Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到 adb,但启动完毕后系统才处于可操作状态。

no device —— 没有设备/模拟器连接。


3- 应用管理


3.1- 查看应用列表

查看应用列表的基本命令格式是

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

即在 adb shell pm list packages 的基础上可以加一些参数进行过滤查看不同的列表,支持的过滤参数如下:

参数显示列表
所有应用
-f显示应用关联的 apk 文件
-d只显示 disabled 的应用
-e只显示 enabled 的应用
-s只显示系统应用
-3只显示第三方应用
-i显示应用的 installer
-u包含已卸载应用
<FILTER>包名包含 <FILTER> 字符串

所有应用

命令:

adb shell pm list packages

系统应用

命令:

adb shell pm list packages -s

第三方应用

命令:

adb shell pm list packages -3

3.2- 安装 APK

命令格式:

adb install [-lrtsdg] <path_to_apk>

参数:

adb install 后面可以跟一些可选参数来控制安装 APK 的行为,可用参数及含义如下:

参数含义
-l将应用安装到保护目录 /mnt/asec
-r允许覆盖安装
-t允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用
-s将应用安装到 sdcard
-d允许降级覆盖安装
-g授予所有运行时权限

3.3- 卸载应用

命令:

adb uninstall [-k] <packagename>

<packagename> 表示应用的包名,-k 参数可选,表示卸载应用但保留数据和缓存目录。

命令示例:

adb uninstall com.qihoo360.mobilesafe

表示卸载 360 手机卫士。

3.4- 清除应用数据与缓存

命令:

adb shell pm clear <packagename>

<packagename> 表示应用名包,这条命令的效果相当于在设置里的应用信息界面点击了「清除缓存」和「清除数据」。

命令示例:

adb shell pm clear com.qihoo360.mobilesafe

表示清除 360 手机卫士的数据和缓存。

3.5- 查看应用详细信息

命令:

adb shell dumpsys package <packagename>

输出中包含很多信息,包括 Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等。

<packagename> 表示应用包名。

输出示例:

Activity Resolver Table:
  Schemes:
      ytmbank:
        67a95af com.zjrc.cba/com.yitong.mobile.biz.launcher.app.SplashActivity

  Non-Data Actions:
      android.intent.action.MAIN:
        67a95af com.zjrc.cba/com.yitong.mobile.biz.launcher.app.SplashActivity
      cn.jiguang.privates.intent.PushActivity:
        273dbc com.zjrc.cba/cn.jiguang.privates.push.ui.PushActivity
      cn.jiguang.privates.intent.JNotifyActivity:
        ecc145 com.zjrc.cba/cn.jiguang.privates.push.service.JNotifyActivity

Receiver Resolver Table:
  Non-Data Actions:
      cn.jpush.android.intent.WakedReceiver:
        80f809a com.zjrc.cba/.push.biz.PushWakedResultReceiver
      com.xiaomi.mipush.MESSAGE_ARRIVED:
        8e4ddcb com.zjrc.cba/cn.jiguang.privates.push.xiaomi.receiver.XiaomiMessageReceiver
      com.xiaomi.mipush.ERROR:
        8e4ddcb com.zjrc.cba/cn.jiguang.privates.push.xiaomi.receiver.XiaomiMessageReceiver
      com.huawei.android.push.intent.REGISTRATION:
        b0879a8 com.zjrc.cba/com.huawei.hms.support.api.push.PushReceiver
      android.net.conn.CONNECTIVITY_CHANGE:
        79d2cc1 com.zjrc.cba/cn.jiguang.privates.core.service.PushReceiver
        fd50c66 com.zjrc.cba/com.xiaomi.push.service.receivers.NetworkStatusReceiver
      com.huawei.intent.action.PUSH_DELAY_NOTIFY:
        4618ba7 com.zjrc.cba/com.huawei.hms.support.api.push.PushMsgReceiver
      cn.jiguang.privates.intent.NOTIFICATION_RECEIVED_PROXY:
        79d2cc1 com.zjrc.cba/cn.jiguang.privates.core.service.PushReceiver
      com.zjrc.cba.config.action:
        3f8854 com.zjrc.cba/.config.biz.ConfigReceiver
      com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK:
        b8ed3fd com.zjrc.cba/cn.jiguang.privates.push.meizu.receiver.MeizuMessageReceiver
      cn.jiguang.privates.intent.RECEIVE_MESSAGE:
        31588f2 com.zjrc.cba/.push.biz.PushMessageReceiver
      com.huawei.android.push.intent.RECEIVE:
        b0879a8 com.zjrc.cba/com.huawei.hms.support.api.push.PushReceiver
      com.meizu.c2dm.intent.RECEIVE:
        b8ed3fd com.zjrc.cba/cn.jiguang.privates.push.meizu.receiver.MeizuMessageReceiver
      com.vivo.pushclient.action.RECEIVE:
        d113b43 com.zjrc.cba/cn.jiguang.privates.push.vivo.receiver.VivoMessageReceiver
      com.meizu.cloud.pushservice.action.PUSH_SERVICE_START:
        936d5c0 com.zjrc.cba/com.meizu.cloud.pushsdk.SystemReceiver
      com.meizu.flyme.push.intent.MESSAGE:
        b8ed3fd com.zjrc.cba/cn.jiguang.privates.push.meizu.receiver.MeizuMessageReceiver
      com.meizu.c2dm.intent.REGISTRATION:
        b8ed3fd com.zjrc.cba/cn.jiguang.privates.push.meizu.receiver.MeizuMessageReceiver
      android.intent.action.USER_PRESENT:
        79d2cc1 com.zjrc.cba/cn.jiguang.privates.core.service.PushReceiver
      com.xiaomi.push.PING_TIMER:
        3f9b2f9 com.zjrc.cba/com.xiaomi.push.service.receivers.PingReceiver
      com.xiaomi.mipush.RECEIVE_MESSAGE:
        8e4ddcb com.zjrc.cba/cn.jiguang.privates.push.xiaomi.receiver.XiaomiMessageReceiver
      com.meizu.flyme.push.intent.REGISTER.FEEDBACK:
        b8ed3fd com.zjrc.cba/cn.jiguang.privates.push.meizu.receiver.MeizuMessageReceiver
      com.huawei.intent.action.PUSH:
        4618ba7 com.zjrc.cba/com.huawei.hms.support.api.push.PushMsgReceiver

Service Resolver Table:
  Non-Data Actions:
      com.huawei.push.msg.NOTIFY_MSG:
        b6f423e com.zjrc.cba/com.huawei.hms.support.api.push.service.HmsMsgService
      cn.jpush.android.intent.DaemonService:
        e82489f com.zjrc.cba/cn.jpush.android.service.DaemonService
      com.heytap.mcs.action.RECEIVE_MCS_MESSAGE:
        9938dec com.zjrc.cba/cn.jiguang.privates.push.oppo.service.OppoHeytapService
      com.coloros.mcs.action.RECEIVE_MCS_MESSAGE:
        99985b5 com.zjrc.cba/cn.jiguang.privates.push.oppo.service.OppoColorosService
      com.huawei.push.msg.PASSBY_MSG:
        b6f423e com.zjrc.cba/com.huawei.hms.support.api.push.service.HmsMsgService
      cn.jiguang.privates.intent.USER_SERVICE:
        c19444a com.zjrc.cba/.push.biz.PushService
      com.huawei.push.action.MESSAGING_EVENT:
        4cccfbb com.zjrc.cba/cn.jiguang.privates.push.huawei.service.HuaweiMessageService

Permissions:
  Permission [com.zjrc.cba.permission.PROCESS_PUSH_MSG] (8219cd8):
    sourcePackage=com.zjrc.cba
    uid=10091 gids=null type=0 prot=signature|privileged
    perm=Permission{b29c831 com.zjrc.cba.permission.PROCESS_PUSH_MSG}
    packageSetting=PackageSetting{2af5b16 com.zjrc.cba/10091}
  Permission [com.zjrc.cba.permission.PUSH_WRITE_PROVIDER] (b6eac97):
    sourcePackage=com.zjrc.cba
    uid=10091 gids=null type=0 prot=signature|privileged
    perm=Permission{a7fae84 com.zjrc.cba.permission.PUSH_WRITE_PROVIDER}
    packageSetting=PackageSetting{2af5b16 com.zjrc.cba/10091}
  Permission [com.zjrc.cba.push.permission.MESSAGE] (da1b66d):
    sourcePackage=com.zjrc.cba
    uid=10091 gids=null type=0 prot=signature
    perm=Permission{8be12a2 com.zjrc.cba.push.permission.MESSAGE}
    packageSetting=PackageSetting{2af5b16 com.zjrc.cba/10091}
  Permission [com.zjrc.cba.permission.JPUSH_MESSAGE] (de77b33):
    sourcePackage=com.zjrc.cba
    uid=10091 gids=null type=0 prot=signature
    perm=Permission{f8b2ef0 com.zjrc.cba.permission.JPUSH_MESSAGE}
    packageSetting=PackageSetting{2af5b16 com.zjrc.cba/10091}
  Permission [com.zjrc.cba.permission.C2D_MESSAGE] (4304c69):
    sourcePackage=com.zjrc.cba
    uid=10091 gids=null type=0 prot=signature
    perm=Permission{20eb6ee com.zjrc.cba.permission.C2D_MESSAGE}
    packageSetting=PackageSetting{2af5b16 com.zjrc.cba/10091}
  Permission [com.zjrc.cba.config.send] (614978f):
    sourcePackage=com.zjrc.cba
    uid=10091 gids=null type=0 prot=signature
    perm=Permission{48c4a1c com.zjrc.cba.config.send}
    packageSetting=PackageSetting{2af5b16 com.zjrc.cba/10091}
  Permission [com.zjrc.cba.permission.MIPUSH_RECEIVE] (bf84625):
    sourcePackage=com.zjrc.cba
    uid=10091 gids=null type=0 prot=signature
    perm=Permission{3b353fa com.zjrc.cba.permission.MIPUSH_RECEIVE}
    packageSetting=PackageSetting{2af5b16 com.zjrc.cba/10091}
  Permission [com.zjrc.cba.permission.PUSH_PROVIDER] (44d1dab):
    sourcePackage=com.zjrc.cba
    uid=10091 gids=null type=0 prot=signature|privileged
    perm=Permission{121ec08 com.zjrc.cba.permission.PUSH_PROVIDER}
    packageSetting=PackageSetting{2af5b16 com.zjrc.cba/10091}

Registered ContentProviders:
  com.zjrc.cba/com.huawei.hms.update.provider.UpdateProvider:
    Provider{78c1fa1 com.zjrc.cba/com.huawei.hms.update.provider.UpdateProvider}
  com.zjrc.cba/com.yitong.miniprogram.framework.android.provider.YTFileProvider:
    Provider{fd2b5c6 com.zjrc.cba/com.yitong.miniprogram.framework.android.provider.YTFileProvider}
  com.zjrc.cba/com.huawei.hms.support.api.push.PushProvider:
    Provider{d3de987 com.zjrc.cba/com.huawei.hms.support.api.push.PushProvider}
  com.zjrc.cba/cn.jiguang.privates.core.service.DataProvider:
    Provider{5edc0b4 com.zjrc.cba/cn.jiguang.privates.core.service.DataProvider}
  com.zjrc.cba/cn.jpush.android.service.DownloadProvider:
    Provider{62a14dd com.zjrc.cba/cn.jpush.android.service.DownloadProvider}
  com.zjrc.cba/android.support.v4.content.FileProvider:
    Provider{2346852 com.zjrc.cba/android.support.v4.content.FileProvider}
  com.zjrc.cba/com.huawei.agconnect.core.provider.AGConnectInitializeProvider:
    Provider{9859723 com.zjrc.cba/com.huawei.agconnect.core.provider.AGConnectInitializeProvider}
  com.zjrc.cba/com.yitong.mobile.framework.utils.YTFileProvider:
    Provider{a003420 com.zjrc.cba/com.yitong.mobile.framework.utils.YTFileProvider}

ContentProvider Authorities:
  [com.zjrc.cba.DownloadProvider]:
    Provider{62a14dd com.zjrc.cba/cn.jpush.android.service.DownloadProvider}
      applicationInfo=ApplicationInfo{2b821d9 com.zjrc.cba}
  [com.zjrc.cba.miniprogram.provider]:
    Provider{fd2b5c6 com.zjrc.cba/com.yitong.miniprogram.framework.android.provider.YTFileProvider}
      applicationInfo=ApplicationInfo{2b821d9 com.zjrc.cba}
  [com.zjrc.cba.hms.update.provider]:
    Provider{78c1fa1 com.zjrc.cba/com.huawei.hms.update.provider.UpdateProvider}
      applicationInfo=ApplicationInfo{2b821d9 com.zjrc.cba}
  [com.zjrc.cba.huawei.push.provider]:
    Provider{d3de987 com.zjrc.cba/com.huawei.hms.support.api.push.PushProvider}
      applicationInfo=ApplicationInfo{2b821d9 com.zjrc.cba}
  [com.zjrc.cba.provider]:
    Provider{2346852 com.zjrc.cba/android.support.v4.content.FileProvider}
      applicationInfo=ApplicationInfo{2b821d9 com.zjrc.cba}
  [com.zjrc.cba.AGCInitializeProvider]:
    Provider{9859723 com.zjrc.cba/com.huawei.agconnect.core.provider.AGConnectInitializeProvider}
      applicationInfo=ApplicationInfo{2b821d9 com.zjrc.cba}
  [com.zjrc.cba.DataProvider]:
    Provider{5edc0b4 com.zjrc.cba/cn.jiguang.privates.core.service.DataProvider}
      applicationInfo=ApplicationInfo{2b821d9 com.zjrc.cba}

Key Set Manager:
  [com.zjrc.cba]
      Signing KeySets: 198

Packages:
  Package [com.zjrc.cba] (2af5b16):
    userId=10091
    pkg=Package{98cb79e com.zjrc.cba}
    codePath=/data/app/com.zjrc.cba-1
    dexoptNeeded=false
    resourcePath=/data/app/com.zjrc.cba-1
    legacyNativeLibraryDir=/data/app/com.zjrc.cba-1/lib
    primaryCpuAbi=armeabi-v7a
    secondaryCpuAbi=null
    versionCode=100 targetSdk=30
    versionName=1.1.0
    splits=[base]
    applicationInfo=ApplicationInfo{2b821d9 com.zjrc.cba}
    flags=[ DEBUGGABLE HAS_CODE ALLOW_CLEAR_USER_DATA LARGE_HEAP ]
    dataDir=/data/user/0/com.zjrc.cba
    supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
    timeStamp=2020-11-23 16:09:48
    firstInstallTime=2020-11-23 16:10:03
    lastUpdateTime=2020-11-23 16:10:03
    signatures=PackageSignatures{310827f [304724c]}
    installPermissionsFixed=true installStatus=1
    pkgFlags=[ DEBUGGABLE HAS_CODE ALLOW_CLEAR_USER_DATA LARGE_HEAP ]
    declared permissions:
      com.zjrc.cba.config.send: prot=signature, INSTALLED
      com.zjrc.cba.permission.PROCESS_PUSH_MSG: prot=signature|privileged, INSTALLED
      com.zjrc.cba.permission.PUSH_PROVIDER: prot=signature|privileged, INSTALLED
      com.zjrc.cba.permission.PUSH_WRITE_PROVIDER: prot=signature|privileged, INSTALLED
      com.zjrc.cba.permission.JPUSH_MESSAGE: prot=signature, INSTALLED
      com.zjrc.cba.push.permission.MESSAGE: prot=signature, INSTALLED
      com.zjrc.cba.permission.C2D_MESSAGE: prot=signature, INSTALLED
      com.zjrc.cba.permission.MIPUSH_RECEIVE: prot=signature, INSTALLED
    requested permissions:
      android.permission.READ_PHONE_STATE
      android.permission.ACCESS_NETWORK_STATE
      android.permission.INTERNET
      android.permission.WRITE_EXTERNAL_STORAGE
      android.permission.CALL_PHONE
      android.permission.ACCESS_FINE_LOCATION
      android.permission.ACCESS_WIFI_STATE
      android.permission.CHANGE_WIFI_STATE
      android.permission.ACCESS_COARSE_LOCATION
      android.permission.USE_FINGERPRINT
      android.permission.REQUEST_INSTALL_PACKAGES
      android.permission.VIBRATE
      android.permission.SYSTEM_ALERT_WINDOW
      android.permission.CAMERA
      android.permission.FLASHLIGHT
      android.permission.READ_CONTACTS
      android.permission.READ_EXTERNAL_STORAGE
      android.permission.GET_TASKS
      android.permission.RESTART_PACKAGES
      android.permission.BLUETOOTH
      android.permission.BLUETOOTH_ADMIN
      android.permission.WAKE_LOCK
      android.permission.RECEIVE_USER_PRESENT
      android.permission.MOUNT_UNMOUNT_FILESYSTEMS
      android.permission.ACCESS_BACKGROUND_LOCATION
      android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
      android.permission.READ_PRECISE_PHONE_STATE
      com.zjrc.cba.permission.PROCESS_PUSH_MSG
      com.zjrc.cba.permission.PUSH_PROVIDER
      com.huawei.appmarket.service.commondata.permission.GET_COMMON_DATA
      android.permission.WRITE_CONTACTS
      android.permission.READ_CALENDAR
      android.permission.WRITE_CALENDAR
      com.zjrc.cba.permission.JPUSH_MESSAGE
      com.meizu.flyme.push.permission.RECEIVE
      com.zjrc.cba.push.permission.MESSAGE
      com.meizu.c2dm.permission.RECEIVE
      com.zjrc.cba.permission.C2D_MESSAGE
      com.coloros.mcs.permission.RECIEVE_MCS_MESSAGE
      com.heytap.mcs.permission.RECIEVE_MCS_MESSAGE
      com.zjrc.cba.permission.MIPUSH_RECEIVE
    install permissions:
      android.permission.RESTART_PACKAGES: granted=true
      com.zjrc.cba.permission.PROCESS_PUSH_MSG: granted=true
      com.zjrc.cba.push.permission.MESSAGE: granted=true
      android.permission.BLUETOOTH: granted=true
      android.permission.GET_TASKS: granted=true
      android.permission.INTERNET: granted=true
      com.zjrc.cba.permission.JPUSH_MESSAGE: granted=true
      android.permission.BLUETOOTH_ADMIN: granted=true
      com.zjrc.cba.permission.C2D_MESSAGE: granted=true
      com.zjrc.cba.permission.MIPUSH_RECEIVE: granted=true
      android.permission.ACCESS_LOCATION_EXTRA_COMMANDS: granted=true
      android.permission.CHANGE_WIFI_STATE: granted=true
      android.permission.FLASHLIGHT: granted=true
      android.permission.ACCESS_NETWORK_STATE: granted=true
      android.permission.USE_FINGERPRINT: granted=true
      com.zjrc.cba.permission.PUSH_PROVIDER: granted=true
      android.permission.VIBRATE: granted=true
      android.permission.ACCESS_WIFI_STATE: granted=true
      android.permission.REQUEST_INSTALL_PACKAGES: granted=true
      android.permission.WAKE_LOCK: granted=true
    User 0:  installed=true hidden=false stopped=true notLaunched=false enabled=0
      gids=[3002, 3003, 3001]
      runtime permissions:
        android.permission.READ_PHONE_STATE: granted=true
        android.permission.CAMERA: granted=true
      disabledComponents:
        com.xiaomi.push.service.XMPushService
      enabledComponents:
        cn.jpush.android.service.DaemonService
        cn.jpush.android.service.DownloadProvider

3.6- 查看应用安装路径

命令:

adb shell pm path <PACKAGE>

输出应用安装路径

输出示例:

adb shell pm path ecarx.weather

package:/data/app/ecarx.weather-1.apk

4- 文件管理


4.1- 复制设备里的文件到电脑

命令:

adb pull <设备里的文件路径> [电脑上的目录]

其中 电脑上的目录 参数可以省略,默认复制到当前目录。

例:

adb pull /sdcard/sr.mp4 ~/tmp/

小技巧:设备上的文件路径可能需要 root 权限才能访问,如果你的设备已经 root 过,可以先使用 adb shell 和 su 命令在
adb shell 里获取 root 权限后,先 cp /path/on/device /sdcard/filename 将文件复制到
sdcard,然后 adb pull /sdcard/filename /path/on/pc。

4.2- 复制电脑里的文件到设备

命令:

adb push <电脑上的文件路径> <设备里的目录>

例:

adb push ~/sr.mp4 /sdcard/

小技巧:设备上的文件路径普通权限可能无法直接写入,如果你的设备已经 root 过,可以先 adb push /path/on/pc
/sdcard/filename,然后 adb shell 和 su 在 adb shell 里获取 root 权限后,cp
/sdcard/filename /path/on/device。


5- 查看日志


5.1- Android 日志

命令格式:

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

5.1.1- 按级别过滤日志

Android 的日志分为如下几个优先级(priority):

V —— Verbose(最低,输出得最多)
D —— Debug
I —— Info
W —— Warning
E —— Error
F —— Fatal
S —— Silent(最高,啥也不输出)
按某级别过滤日志则会将该级别及以上的日志输出。

比如,命令:

adb logcat *:W

会将 Warning、Error、Fatal 和 Silent 日志输出。

(注: 在 macOS 下需要给 :W 这样以 * 作为 tag 的参数加双引号,如 adb logcat ":W",不然会报错 no
matches found: *:W。)

5.1.2- 按 tag 和级别过滤日志

可以由多个 [:priority] 组成。

比如,命令:

adb logcat ActivityManager:I MyApp:D *:S

表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。

5.2- 常用打印日志命令

  • 命令行打印日志
adb logcat -v time 
  • 输出日志到本地 log.txt 文件
adb logcat -v time >log.txt
  • 清空日志
adb logcat -c

6- 查看设备信息


6.1- 型号

命令:

adb shell getprop ro.product.model

输出示例:

Nexus 5

6.2- 电池状况

命令:

adb shell dumpsys battery

输入示例:

Current Battery Service state:
  AC powered: false
  USB powered: true
  Wireless powered: false
  status: 2
  health: 2
  present: true
  level: 44
  scale: 100
  voltage: 3872
  temperature: 280
  technology: Li-poly

其中 scale 代表最大电量,level 代表当前电量。上面的输出表示还剩下 44% 的电量。

6.3- 屏幕分辨率

命令:

adb shell wm size

输出示例:

Physical size: 1080x1920

6.4- android_id

命令:

adb shell settings get secure android_id

输出示例:

51b6be48bac8c569

6.5- Android 系统版本

命令:

adb shell getprop ro.build.version.release

输出示例:

5.0.2

7- 实用功能


7.1- 屏幕截图

截图保存到电脑:

adb exec-out screencap -p > sc.png

如果 adb 版本较老,无法使用 exec-out 命令,这时候建议更新 adb 版本。无法更新的话可以使用以下麻烦点的办法:

先截图保存到设备里:

adb shell screencap -p /sdcard/sc.png

然后将 png 文件导出到电脑:

adb pull /sdcard/sc.png

7.2- 屏幕录制

录制屏幕以 mp4 格式保存到 /sdcard:

adb shell screenrecord /sdcard/filename.mp4

需要停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒。

如果需要导出到电脑:

adb pull /sdcard/filename.mp4

7.3- 重启手机

命令:

adb reboot

7.4- 检测设备是否已 root

命令:

adb shell
su

此时命令行提示符是 $ 则表示没有 root 权限,是 # 则表示已 root。

7.5- 使用 Monkey 进行压力测试

Monkey 可以生成伪随机用户事件来模拟单击、触摸、手势等操作,可以对正在开发中的程序进行随机压力测试。

简单用法:

adb shell monkey -p <packagename> -v 500

表示向 指定的应用程序发送 500 个伪随机事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值