ADB调试⼯具

文章目录

  • [一、原生App、混合App、Web App都是什么东西](#一、原生App、混合App、Web App都是什么东西)
    • [1.1 三种形式的App的本质差异](#1.1 三种形式的App的本质差异)
    • [1.2 核心差异对比 一一 开发与测试重点全表格](#1.2 核心差异对比 一一 开发与测试重点全表格)
  • 二、ADB调试工具
    • [2.1 配置 adb 环境](#2.1 配置 adb 环境)
    • [2.2 adb的工作原理](#2.2 adb的工作原理)
    • [2.3 启用adb调试](#2.3 启用adb调试)
    • [2.4 常用 adb 命令](#2.4 常用 adb 命令)
  • [三、ADB Logcat](#三、ADB Logcat)
    • [3.1 LogCat 核心功能与使用方法](#3.1 LogCat 核心功能与使用方法)
      • [3.1.1 LogCat 基本命令](#3.1.1 LogCat 基本命令)
      • [3.1.2 LogCat 日志级别详解](#3.1.2 LogCat 日志级别详解)
      • [3.1.3 LogCat 实用技巧](#3.1.3 LogCat 实用技巧)
    • [3.2 LogCat 常用场景](#3.2 LogCat 常用场景)
    • [3.3 ADB 常用命令速查表(与LogCat相关)](#3.3 ADB 常用命令速查表(与LogCat相关))
    • [3.4 LogCat 使用最佳实践](#3.4 LogCat 使用最佳实践)

一、原生App、混合App、Web App都是什么东西

1.1 三种形式的App的本质差异

  • APP类型对比总结表
类型 定义 生活实例 核心特征
原生APP 基于手机操作系统(iOS/Android)官方技术栈开发的独立应用,需通过应用商店下载安装,直接调用系统底层资源。就像为iOS系统专用Swift语言、为Android系统用Kotlin语言打造的"专属工具"。 微信、抖音、《原神》、支付宝。这些APP需要在App Store或应用市场下载后才能使用,启动后直接运行在手机系统中,不依赖浏览器。 系统权限高、性能强,但iOS和Android需分别开发,相当于"建两栋独立别墅"。
混合APP 用"原生代码做壳,内嵌WebView容器加载H5页面"的混合模式开发,既保留原生APP的安装形态,又利用H5的跨平台优势。简单说就是"穿原生的外衣,藏网页的内核"。 淘宝、京东、今日头条。这些APP的首页、商品详情页等高频更新模块是H5页面(打开时可能看到加载进度条),而支付、消息通知等核心功能则是原生模块。 一套H5代码可跨平台复用,原生模块保障核心体验,是"成本与体验的平衡术"。
H5 (Web App) 用HTML5+CSS+JavaScript开发的网页应用,无需安装,通过浏览器或APP内嵌的WebView即可运行。它本质就是"优化过的手机网页",不是传统意义上的"APP"。 微信朋友圈的抽奖活动页、美团外卖的分享链接、微信小游戏"跳一跳"早期版本。这些内容点击链接就能打开,关闭浏览器就"消失",不用占用手机存储空间。 免安装、跨平台,但依赖网络和浏览器,功能权限受限制。

1.2 核心差异对比 一一 开发与测试重点全表格

对比维度 原生APP 混合APP H5 (Web App)
开发核心技术 iOS: Swift/Objective-C + iOS SDK Android: Kotlin/Java + Android SDK 原生技术(壳) + H5技术(芯) + 混合框架(Cordova/ionic) HTML5+CSS3+JavaScript + Vue/React等前端框架
开发成本 高:需两套开发团队,周期3-6个月 中:1套H5团队+少量原生开发,周期1-3个月 低:1套前端团队,周期1-2个月
跨平台能力 弱:iOS/Android代码复用率<30% 中:H5部分复用率>70%,原生部分需适配 强:一套代码覆盖iOS/Android/PC,复用率>90%
性能表现 优:启动秒级,动画60fps无卡顿 中:原生模块流畅,H5页面可能卡顿(30-45fps) 差:依赖网络,首次打开延迟1-3秒,复杂动画掉帧
系统权限 完全访问:Face ID、NFC、蓝牙、传感器等 部分访问:H5通过框架桥接调用,原生模块无限制 有限访问:仅支持浏览器开放权限(GPS),不支持NFC等
更新方式 需审核:应用商店审核 + 用户手动下载更新 双模式:H5部分服务器更新,原生部分需商店审核 即时生效:服务器更新后刷新即用,无需审核
测试核心重点 1. 系统版本适配(如iOS18/Android15) 2. 硬件兼容性 3. 性能测试 4. 权限稳定性 1. 原生-H5交互接口测试 2. WebView兼容性 3. 页面流畅度 4. 离线缓存功能 1. 浏览器兼容性(Chrome/Safari/微信) 2. 网络适应性 3. 响应式布局 4. 跨设备适配

二、ADB调试工具

adb(Android Debug Bridge)是一个通用的命令行工具,允许与模拟器实例或连接的Android设备进行通信。它能够提供多种设备操作的便利,例如安装和调试应用。

2.1 配置 adb 环境

  • 在android_sdk/platform-tools/目录中找到adb工具。
  • 将该路径配置到环境变量中。
  • 启动命令行工具(cmd),输入adb来验证配置是否成功。

2.2 adb的工作原理

启动adb客户端时,客户端会先检查是否有已经运行的adb服务器进程。如果没有,它将启动服务器。服务器启动时会绑定到本地TCP端口5037,并侦听来自adb客户端的命令,所有adb客户端通过该端口与服务器通信。

2.3 启用adb调试

要在设备上使用adb进行USB调试,你需要在设备的系统设置中启用USB调试,位置如下:

  • Settings> Developer options (开发者选项)
  • 如果设备的开发者选项是隐藏的,在 Settings > About phone,连续点击 Build number 七次即可启用。

注意: 对于Android 4.2 及更高版本,当设备通过USB连接到计算机时,系统会弹出一个对话框,要求确认RSA密钥的授权,以确保安全。

2.4 常用 adb 命令

查看 adb 版本

bash 复制代码
adb version
  • 如果是真实手机,会直接连接成功的。前提是USB调试要打开
  • 链接真手机的步骤
    1. 安卓打开开发者选项关于手机的系统版本号连续点击10下
    2. 进入开发者选项USB调试模式开启
    3. 数据线链接手机和电脑
    4. 手机应该会弹出一个是否允许USB调试允许

查看设备信息:adb devices

进入adb shell:adb shell

c 复制代码
# 进入指定设备的shell
adb -s 127.0.0.1:62001 shel

# 退出shell
exit

# root权限与adb
# 进入adb shell后可能会看到两种提示符:
                  # 表示具有root权限。
                  $ 表示没有root权限。

应用安装与卸载

c 复制代码
# 安装应用:adb install
# 覆盖安装:adb install -r "apk文件路径"
# 指定设备安装:adb -s 127.0.0.1:62001 install "apk文件路径"
# 卸载    应用:adb uninstall "包名"
# 卸载但保留配置和缓存文件:adb uninstall -k "包名"
# 可以通过 adb shell pm list package 来查看已安装的应用包名。

文件操作

c 复制代码
将文件从PC传输到设备:adb push "本地文件路径""设备路径"
例子:adb push D:\ccccc\test.doc /sdcard/Documents

将文件从设备传输到PC:adb pull<设备文件路径><本地路径>
例子:adb pull /sdcard/pictures/Sky/SKY_20240515_215852_.jpg D:\ccccc

截图

  • 设备上截图:
c 复制代码
adb shell screencap /sdcard/screen.png
adb pull /sdcard/screen2026.png D:\2026.png

adb服务的启动与关闭

c 复制代码
启动adb服务:adb start-server
关闭adb服务:adb kill-server
Tips:如果5037端口被占用,可以通过以下命令释放:
netstat -ano | findstr "5037"
taskkill -f -pid "5037"

三、ADB Logcat

3.1 LogCat 核心功能与使用方法

3.1.1 LogCat 基本命令

命令 功能说明 使用示例
启动LogCat 实时打印设备所有日志 adb logcat
保存日志到文件 将日志输出到指定文件 adb logcat > D:\log.txt
清除日志缓存 清空设备上的当前日志缓存 adb logcat -c
指定日志级别 只显示特定级别及以上的日志 adb logcat *:E
关键词过滤 按关键词过滤日志 `adb logcat

3.1.2 LogCat 日志级别详解

级别 代号 详细说明 使用场景
最详细 V (Verbose) 记录所有信息 开发调试时全面监控
调试 D (Debug) 调试信息 开发过程中的问题排查
信息 I (Info) 一般信息,显示运行状态 应用正常运行状态监控
警告 W (Warn) 警告信息,可能引发问题但不影响运行 潜在问题预警
错误 E (Error) 错误信息,严重错误会影响应用运行 问题定位和修复
致命 F (Fatal) 致命错误,通常导致应用崩溃 严重问题分析
静默 S (Silent) 关闭日志输出 不需要日志时

3.1.3 LogCat 实用技巧

技巧 命令 用途
按级别过滤 adb logcat *:E 只显示Error级别及以上的日志
关键词过滤 `adb logcat findstr "崩溃"`
组合过滤 adb logcat -s "MyTag":D 只显示MyTag标签的Debug级别日志
保存日志 adb logcat > D:\app_log.txt 将日志保存到指定文件

3.2 LogCat 常用场景

场景 操作方法 关键命令
调试应用崩溃 查看崩溃日志,分析堆栈跟踪 `adb logcat
性能分析 捕获应用性能问题(如ANR) `adb logcat
系统行为检查 检查系统事件或后台进程 `adb logcat
应用启动监控 监控应用启动过程 `adb logcat

3.3 ADB 常用命令速查表(与LogCat相关)

命令 功能 与LogCat关系
adb devices 查看连接的设备 确保设备连接正常才能查看日志
adb shell top 查看设备CPU和内存使用情况 辅助分析性能问题
adb shell dumpsys battery 查看设备电池状态信息 分析电池相关问题
`adb shell dumpsys window w findstr name=` 显示当前打开的包名\activity名
adb shell am force-stop 强制停止应用 用于重现问题后分析日志
adb shell pm clear 清除应用数据和缓存 重置环境后分析日志

3.4 LogCat 使用最佳实践

  1. 问题定位流程

    • 重现问题 → 捕获日志 → 按级别过滤 → 按关键词搜索 → 分析日志
  2. 高效排查技巧

    • 先使用 adb logcat *:E 查看错误日志
    • 再用关键词过滤精确定位问题
    • 保存完整日志用于后续分析
  3. 常见问题排查

    • 应用崩溃:搜索"Exception"、"Force close"
    • ANR问题:搜索"ANR"、"Application Not Responding"
    • 网络问题:搜索"Network"、"Connectivity"

提示:在实际开发中,结合日志级别过滤和关键词搜索,可以快速定位问题,提高调试效率。LogCat是Android开发中不可或缺的调试工具,熟练掌握能大幅提升问题排查能力。