ADB(Android Debug Bridge)—— Android调试桥

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

介绍

ADB(Android Debug Bridge),Android调试桥,与设备进行通信的一种命令行工具,协助开发人员在开发android应用过程中更快更好地调试apk。
https://developer.android.google.cn/tools/adb?hl=zh-cn

工作原理

C/S架构,server和daemon建立连接,client端发送adb命令,向server发送服务请求,server端将client端的请求通过usb或tcp的方式发送到对应的daemon,daemon接收命令解析运行。

  • client客户端(运行在pc端)
    发送adb命令调用客户端,adb程序尝试定位主机的adb服务器,没有就启动服务器进程。

    server端与本地 TCP 端口5037端口绑定,监听client端发送的adb命令。

  • server服务端(运行在pc端)
    作为后台进程运行,管理客户端和运行在模拟机或设备上的进程之间的通信。检测USB端口,感知设备的连接和拔除以及模拟器的启动或暂停。

    server端通过扫描端口5555~5585范围内的奇数号端口查找设备或模拟器以建立连接,一旦发现adbd便与其相应端口建立连接。偶数号端口用于控制台连接。

  • daemon守护进程(运行在设备端)
    在模拟机或设备上作为后台进程运行,连接server端响应client端的操作。

    与server端建立连接后,便可使用adb命令访问设备。

启用adb调试

USB连接

无线连接

常用命令

pm命令

pm即Package Manager,主要用于查询和管理Android应用程序包,比如 “装 APP”“查 APP 信息”“删 APP 数据”,是静态的管理。

https://blog.csdn.net/WEB___/article/details/136512217?spm=1011.2415.3001.5331

am命令

am即Activity Manager,主要用于管理Android应用程序的Activity,比如 “打开 APP”“按电源键”“调起拍照”,是动态的操作。

# 查看使用手册
adb shell am

-n是指定组件:精准启动 “包名 + Activity” 对应的 APP / 页面,关键词 “精准定位”;
-a是指定动作:按系统动作匹配应用,关键词 “按行为启动”;
-w是等待完成:控制命令阻塞等待应用退出,返回详细状态,关键词 “阻塞等待、验证状态”;
常用组合:-n + -w(验证精准启动)、-a + -w(验证动作启动)、-a + -n + -w(指定应用处理动作并验证)。

强制关闭

adb shell am force-stop 包名

启动activity

adb shell am start -W 包名/启动名
# 打开图库
adb shell am start -W com.android.gallery3d/com.android.gallery3d.app.GalleryActivity
返回内容解析

在这里插入图片描述

Starting

正在启动一个Intent。

1、指定动作 (action)

  • android.intent.action.MAIN - 主入口点
  • android.intent.action.VIEW - 查看数据
  • 其他自定义动作

2、指定类别 (category)

  • [android.intent.category.LAUNCHER] - 表示可从启动器启动
  • [android.intent.category.DEFAULT] - 默认类别

3、指定组件 (component)

  • 格式为 包名/活动类全名
Warning
Warning: Activity not started, intent has been delivered to currently running top-most instance.
当前要启动的Activity已经在前台运行,Android将Intent传递给当前正在运行的顶层aAtivity,而不是启动一个新的Activity。

Warning: Activity not started, its current task has been brought to the front
当前要启动的Activity已经在后台运行,系统为了提高效率,将其直接带到前台,而不是重新启动。

如果需要启动一个新的activity,清掉应用后台即可。

Status

Activity启动是否成功。

  • ok:启动成功
  • error:启动失败,可能是权限问题、Activity不存在等
  • timeout:启动超时
LaunchState

Activity的启动状态。

  • COLD:冷启动,进程未运行,需全新创建
  • WARM:温启动,Activity不在栈顶,但进程已存在
  • HOT:热启动,Activity仍在栈顶,直接恢复
  • UNKNOWN:未知状态
Activity

最终启动的Activity名称,可能和请求的Activity不同,取决于 Intent匹配。

  • 启动成功显示目标Activity
  • 启动失败显示null或错误的Activity
ThisTime

当前 Activity 的启动时间,仅包含 onCreate、onStart、onResume 等生命周期方法的执行时间(ms)

TotalTime

整个应用进程的启动时间,如果进程未运行,包含进程创建时间(ms),等于ThisTime+应用资源启动时间。
冷启动:TotalTime > ThisTime(因为包含进程初始化)
热启动:TotalTime ≈ ThisTime(进程已存在)

WaitTime

ActivityManager(系统)处理启动请求的总时间,包括权限检查、Intent 解析等(ms),等于TotalTime+系统资源启动时间。

rm命令

用于删除文件或目录的常用命令

通过adb命令删除存储路径下的文件,但系统相册中仍能看到照片,这是安卓系统的媒体文件索引机制导致的典型问题。相册显示的并非文件本身,而是系统媒体数据库的缓存记录,即使原文件被删除,缓存未更新时相册仍会展示原有照片。

adb shell rm -rf /storage/emulated/0/DCIM/Camera/*

解决方法是:
1、重启设备,安卓系统将重新扫描所有存储设备,删除不存在的文件。
2、发送系统广播,触发扫描

adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///storage/emulated/0/DCIM/Camera

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值