quokka 是一个 Mac 命令行工具(CLI),用于检查和管理通过 USB 连接的手机设备,支持 iPhone 和 Android。它的核心特点是不需要越狱或 root 权限,也不依赖系统提权即可完成大部分操作。
用途
quokka 面向开发者、测试人员或需要快速管理测试设备的用户。它可以从终端读取设备存储、电池、应用、媒体、设备身份和实时系统日志,并执行清理空间、卸载应用和重启设备等操作。
主要能力
- 日志查看:
qk logs打开 TUI 查看器,支持按级别或进程过滤、搜索、暂停和保存;--no-tui可输出纯文本用于管道或 CI。 - 空间清理:
qk analyze按大小排序最占空间的媒体文件;qk media -d分组疑似重复文件,两者都可通过交互式选择器删除文件。 - 应用管理:
qk apps按大小列出用户应用并支持通过 bundle id 卸载,--yes可用于脚本。 - 设备状态读取:
qk status和qk info以清晰块状输出设备和存储状态;--redact可遮蔽序列号、UDID、IMEI 和 MAC 以便安全截图。 - 其他:无参数运行
qk打开交互式启动器;qk card可生成包含设备信息的图像;qk capture(仅 iOS)提供实时 TUI 抓包。
使用方式
quokka 自动检测连接的设备是 iPhone(通过 usbmuxd)还是 Android(通过 adb),也可用 --platform ios|android 或环境变量 QK_PLATFORM 强制指定。多设备连接时,裸 qk 启动器会在侧边栏列出所有设备供切换;子命令可使用全局标志 --udid(长格式,无短格式)指定设备,也读取环境变量 QK_UDID。
环境要求
- 一台 Mac,手机通过数据线连接。
- iPhone:需要 Xcode 命令行工具(
xcode-select --install)提供 usbmuxd;首次连接需解锁并信任电脑;iOS 17+。 - Android:需要 adb 在 PATH 中(
brew install android-platform-tools),启用 USB 调试并接受授权;Android 8+。 - 无 root 时部分字段为尽力而为:应用名称显示为包名,电池健康/循环次数不可用,抓包(
qk capture)仅限 iOS。
安装
- Homebrew(推荐):
brew install dutradotdev/tap/quokka(支持 Apple Silicon 和 Intel)。 - 一键安装(无 Homebrew):
curl -fsSL https://raw.githubusercontent.com/dutradotdev/quokka/main/install.sh | sh,从 GitHub Releases 拉取预编译二进制到~/.cargo/bin,重复运行即可更新。 - Cargo(源码编译):
cargo install --git https://github.com/dutradotdev/quokka,编译较慢,适合跟踪 main 分支。
所有安装方式都会在 PATH 中放置两个二进制:quokka 和更短的 qk,功能相同。
适用场景
- 调试时实时查看设备日志。
- 清理测试设备上的冗余媒体文件或卸载占空间的应用。
- 快速获取设备状态、存储和身份信息,并可脱敏后截图。
- 通过
--json输出结构化数据,集成到脚本或 CI 流程中(logs --json输出 NDJSON)。
限制
- 仅支持 Mac 作为主机。
- iPhone 需要 iOS 17+,Android 需要 Android 8+。
- 无 root 时部分功能受限(如上文所述)。
- 项目为 MIT 许可证,但未提供具体的定价或商业支持信息。
- 代码仓库为 Cargo workspace,包含 quokka-core 和 quokka-cli 两个 crate,有 CI 覆盖格式检查、clippy、测试、cargo audit 和 cargo deny。