如何在 Mac 上卸载 RuntimeViewer
RuntimeViewer 是一款 Objective-C 与 Swift 运行时浏览与逆向分析工具,用于动态查看正在运行的 macOS 及 iOS 进程中的类结构、方法、属性、成员变量与协议实现。卸载 RuntimeViewer 仅移除这款审查工具本体,不会终止、修改或损坏你所审查的目标进程、系统框架或应用二进制文件。本文覆盖 官方 Mac 应用 和 Homebrew cask runtimeviewer。
退出并移除应用
- 在 RuntimeViewer 中按 Command + Q,或者选择菜单栏 RuntimeViewer › Quit RuntimeViewer。如果启动时 macOS 弹出本地网络访问权限提示,点击拒绝只会禁用局域网设备发现,不影响后续卸载应用。
- 打开访达,进入「应用程序」,将
RuntimeViewer.app移到废纸篓。
核对本机数据
下表中的路径在本次安装中得到核实,或由 Homebrew cask 声明。在访达按 Shift + Command + G 打开逐项核对。不存在的路径跳过即可。切勿自行清理 /Library/LaunchDaemons;cask 声明的后台守护进程 plist 仅在显式启用特权 root 级远程审查时才会安装,日常普通审查不会创建该文件。
| 位置 | 内容说明 | 处理建议 |
|---|---|---|
~/Library/Preferences/com.JH.RuntimeViewer.plist |
偏好设置与窗口属性 | 偏好设置。文件在时,Mole 会默认勾选。 |
~/Library/Caches/com.JH.RuntimeViewer |
应用运行时缓存 | 缓存。目录在时,Mole 会默认勾选。 |
~/Library/HTTPStorages/com.JH.RuntimeViewer |
网络与 HTTP 会话存储 | HTTP 存储。目录在时,Mole 会默认勾选。 |
~/Library/Application Support/RuntimeViewer |
应用支持文件与审查状态 | 会列出供审查,在「卸载时一并移除数据和配置」关闭时不勾选。 |
~/Library/Saved Application State/com.JH.RuntimeViewerCatalystHelper~iosmac.savedState |
cask 声明的 Catalyst 状态保存 | cask 声明的保存状态。本次测试未发现该路径。 |
~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.jh.runtimeviewer.sfl* |
cask 声明的最近打开文档书签记录 | cask 声明的最近打开记录。请勿删除 com.apple.sharedfilelist 父目录。 |
检查结果
pgrep -il RuntimeViewer
ls -ld "/Applications/RuntimeViewer.app" "$HOME/Library/Preferences/com.JH.RuntimeViewer.plist" "$HOME/Library/Caches/com.JH.RuntimeViewer" "$HOME/Library/HTTPStorages/com.JH.RuntimeViewer" "$HOME/Library/Application Support/RuntimeViewer"
pgrep没有输出,表示没有找到正在运行的 RuntimeViewer 进程。pgrep有输出时,到活动监视器里看一眼,确认是否有同名残留进程。- 报错不能证明应用已经完全退出。
ls打印出路径,表示该路径仍留在磁盘上。No such file or directory表示该路径已被彻底清除。Permission denied表示当前用户权限无法读取对应路径。
用 Homebrew 安装时
brew uninstall --cask runtimeviewer
cask 的 zap 清单包含 /Library/LaunchDaemons/com.JH.RuntimeViewerService.plist、~/Library/Application Support/RuntimeViewer、~/Library/Caches/com.JH.RuntimeViewer、~/Library/HTTPStorages/com.JH.RuntimeViewer、~/Library/Preferences/com.JH.RuntimeViewer.plist、~/Library/Saved Application State/com.JH.RuntimeViewerCatalystHelper~iosmac.savedState 以及最近打开项 ~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.jh.runtimeviewer.sfl*。自己运行 brew uninstall --cask --zap runtimeviewer 会按整份清单删除,不读取 Mole 的勾选。Mole 会先核对整份删除清单,碰到未勾选的数据、共享文件或无法确认的路径时跳过 --zap。你勾选的残留仍由 Mole 自己的删除流程清理。
Mole 会列出什么
Mole 会勾选应用本体,并在存在时勾选 ~/Library/Preferences/com.JH.RuntimeViewer.plist、~/Library/Caches/com.JH.RuntimeViewer 和 ~/Library/HTTPStorages/com.JH.RuntimeViewer。~/Library/Application Support/RuntimeViewer 会列出,在设置 › 通用 › 清理里的「卸载时一并移除数据和配置」关闭时不勾选。LaunchDaemon 路径位于常规废纸篓删除范围之外。除非你明确知道安装过 RuntimeViewer 专用的守护进程 plist,否则不要碰 /Library/LaunchDaemons。
以上默认状态以「卸载时一并移除数据和配置」关闭为前提,开启后也会勾选符合条件的待审查应用数据,共享存储和受保护数据仍保留单独审查或锁定。
这次检查覆盖了什么
2026 年 10 月 9 日,把官网 Universal 包里的 RuntimeViewer 2.1.2 拷进「应用程序」。拒绝本地网络权限提示后卸载。勾选之后,记录里的删除包括应用、偏好文件、缓存目录、HTTP 存储和 ~/Library/Application Support/RuntimeViewer。完成页依然报告了未被勾选的路径。没有创建 /Library/LaunchDaemons/com.JH.RuntimeViewerService.plist。运行时 Status 有单独一行 RuntimeViewer。没有发现新的登录项代理。没有打开 Mole 的更新页。没有用 Homebrew 安装来测。
