--- 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`。 在 macOS 上,从程序坞启动的应用读不到 shell 配置文件里导出的环境变量。如果依赖 `ANDROID_HOME`,请把 SDK 装在默认位置,或者从终端启动 OpenIDEA。 ## 打开 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 行。 - 一次只能查看一台设备。 - 没有按应用包名或进程选择的功能,不能保存过滤预设,也不能导出日志。