mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-14 16:07:52 +00:00
70 lines
5.0 KiB
Plaintext
70 lines
5.0 KiB
Plaintext
---
|
||
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 行。
|
||
- 一次只能查看一台设备。
|
||
- 没有按应用包名或进程选择的功能,不能保存过滤预设,也不能导出日志。
|