文章目录
- [一、原生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 版本](#查看 adb 版本)
- [查看设备信息:adb devices](#查看设备信息:adb devices)
- [进入adb shell:adb shell](#进入adb shell:adb shell)
- 应用安装与卸载
- 文件操作
- 截图
- 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调试要打开
- 链接真手机的步骤
- 安卓打开开发者选项关于手机的系统版本号连续点击10下
- 进入开发者选项USB调试模式开启
- 数据线链接手机和电脑
- 手机应该会弹出一个是否允许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 使用最佳实践
-
问题定位流程:
- 重现问题 → 捕获日志 → 按级别过滤 → 按关键词搜索 → 分析日志
-
高效排查技巧:
- 先使用
adb logcat *:E查看错误日志 - 再用关键词过滤精确定位问题
- 保存完整日志用于后续分析
- 先使用
-
常见问题排查:
- 应用崩溃:搜索"Exception"、"Force close"
- ANR问题:搜索"ANR"、"Application Not Responding"
- 网络问题:搜索"Network"、"Connectivity"
提示:在实际开发中,结合日志级别过滤和关键词搜索,可以快速定位问题,提高调试效率。LogCat是Android开发中不可或缺的调试工具,熟练掌握能大幅提升问题排查能力。