当前位置: 首页 > news >正文

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

文章目录

  • 介绍
  • 工作原理
  • 启用adb调试
    • USB连接
    • 无线连接
  • 常用命令
    • pm命令
  • am命令
    • 启动activity
      • 返回内容解析
        • Starting
        • Warning
        • Status
        • LaunchState
        • Activity
        • ThisTime
        • TotalTime
        • WaitTime

介绍

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应用程序包。

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

am命令

am即Activity Manager,主要用于管理Android应用程序的Activity。

# 查看使用手册
adb shell am

启动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+系统资源启动时间。

http://www.lryc.cn/news/615373.html

相关文章:

  • PAT 1052 Linked List Sorting
  • java之父-新特性
  • React中实现完整的登录鉴权与权限控制系统
  • 算法题(183):质量检测
  • 【递归、搜索和回溯】FloodFill 算法介绍及相关例题
  • 比亚迪第五代DM技术:AI能耗管理的深度解析与实测验证
  • ToB大型软件可靠性测试方案
  • Dell PowerEdge: Servers by generation (按代系划分的服务器)
  • imx6ull-驱动开发篇15——linux自旋锁
  • Orange的运维学习日记--36.NFS详解与服务部署
  • 回答“http协议 ,js组件化,工程化, seo优化策略 ,针对不同平台终端适配 web标注和兼容性”
  • Vue3的简单学习
  • Vuex 数据共享
  • JVM常用参数有哪些?
  • 06.【数据结构-C语言】队列(先进先出,队列实现:入队列、出队列、获取队头or队尾元素,队列实现代码,队列相关题目)
  • idea设置注释--带日期和作者和描述
  • 排序概念以及插入排序
  • Oracle字段操作
  • (nice!!!)(LeetCode 面试经典 150 题) 146. LRU 缓存 (哈希表+双向链表)
  • 在 Vue 中动态引入SVG图标的实现方案
  • STM32 外设驱动模块四:光敏电阻(LDR) 模块
  • 後端開發技術教學(四) 數據交互延伸
  • 2025年渗透测试面试题总结-09(题目+回答)
  • 力扣(轮转数组)
  • 欧拉公式的意义
  • gpt-oss 全量技术解读
  • AI鉴伪技术:守护数字时代的真实性防线
  • 数学学习 | 高数、线代、概率论及数理统计荐书
  • 【C++】set
  • AI热点周报(8.3~8.9):OpenAI重返开源,Anthropic放大招,Claude4.1、GPT5相继发布