Files
openidea/docs/zh/guide/android.mdx
T

70 lines
5.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Android 与 Logcat"
description: "在 Logcat 工具窗口中查看已连接 Android 设备或模拟器的日志。"
---
OpenIDEA 目前的 Android 支持就是 **Logcat 日志** 工具窗口:通过 `adb` 实时显示已连接设备或模拟器的日志,并提供级别和文本过滤。它不负责构建、安装或运行 Android 应用,也不管理模拟器、不编辑 Android 资源。
## 准备 adb
Logcat 调用的是 Android SDK platform-tools 里的 `adb`,OpenIDEA 不自带。查找顺序如下:
1. 环境变量 `OPENIDEA_ADB`(可执行文件的完整路径)。
2. `ANDROID_HOME` 或 `ANDROID_SDK_ROOT` 下的 `platform-tools/`。
3. 常见 SDK 位置:`~/Library/Android/sdk`(macOS)、`~/Android/Sdk`(Linux)、`%LOCALAPPDATA%\Android\Sdk`(Windows)。
4. `PATH` 中的 `adb`,再找几个常见安装路径,例如 `/opt/homebrew/bin/adb`、`C:\platform-tools\adb.exe`。
<Note>
在 macOS 上,从程序坞启动的应用读不到 shell 配置文件里导出的环境变量。如果依赖 `ANDROID_HOME`,请把 SDK
装在默认位置,或者从终端启动 OpenIDEA。
</Note>
## 打开 Logcat
第一次打开之前,Logcat 不会出现在工具窗口栏上。可以通过 **更多工具窗口**(工具窗口栏上的 `…` 按钮)、**视图 › 工具窗口 › Logcat 日志**,或查找操作(`⌘⇧A` / `Ctrl+Shift+A`)打开。不打开项目也能用。
用 USB 连接设备或启动模拟器。设备列表按 `型号 (序列号)` 显示;离线或未授权的设备会列出来但不能选择。接入新设备后点 **刷新设备**。
选中设备后,Logcat 先显示其缓冲区里最近 200 行,然后持续跟随新输出。切换到其他设备时视图会清空重来。
## 工具栏
| 控件 | 作用 |
| ------------------- | ------------------------------------------------------------------------------------------------------- |
| **设备** | 要查看的设备。 |
| **最低级别** | 只显示该级别及以上的行:Verbose、Debug、Info、Warnings、Errors、Fatal。不符合 logcat 格式的行总是显示。 |
| 过滤框 | 过滤表达式(见下文)。 |
| **过滤历史** | 最近用过的过滤条件,**清除历史记录** 可清空。 |
| **暂停** / **继续** | 暂停刷新视图。暂停期间收到的行会在继续时补上。 |
| 滚动到末尾 | 跟随最新一行。向上滚动会停止跟随,再点一次按钮恢复。 |
| **清除** | 清空视图。设备自身的日志缓冲区不会被清除。 |
| **刷新设备** | 重新向 `adb` 获取设备列表。 |
底部状态栏显示日志流是否在运行、暂停时显示 `Paused`、行数(过滤后显示为 `显示数 / 总数`),过滤表达式无效时还会显示错误。
## 过滤表达式
过滤框的写法和 Android Studio 的 Logcat 一致:
| 表达式 | 匹配 |
| -------------------------------------------- | ------------------------------------- |
| `tag:glide` | 标签包含 `glide` |
| `message:boom`(或 `msg:`) | 消息包含 `boom` |
| `pid:4242` | 进程 ID 或线程 ID 为 4242 |
| `level:error`、`level:warn,error`、`level:e` | 级别为其中之一(可写名称或首字母) |
| `-tag:chatty` | 排除匹配的行(也可以用 `!`) |
| `a b` | 同时满足(也可以用 `&`) |
| `a\|b` | 满足其一 |
| `(a\|b) -c` | 分组 |
| `message~:^Tile.*` | 不区分大小写的正则表达式 |
| `message:"two words"` | 带引号的值 |
| `glide` | 不带字段的词会匹配标签、消息或 `#pid` |
文本匹配不区分大小写。按 `Enter` 把当前过滤条件存入历史,在过滤框里按 `↑` / `↓` 可以翻看之前的条件。历史最多保留 20 条。
## 限制
- 视图只保留最近 20,000 行。
- 一次只能查看一台设备。
- 没有按应用包名或进程选择的功能,不能保存过滤预设,也不能导出日志。