关于 Oh My Android
Oh My Android 是用于在 Android 模拟器和手机上测试应用的原生 macOS 配套工具。它提供常驻控制面板、基于 dp 的布局检查和可选 MCP 服务,支持手动测试与 Agent 操作。
主要功能
- 01一键控制设备与显示设置
- 02布局测量和 TalkBack 审计
- 03检查应用数据与 SQLite
- 04截图、录屏和模拟器快照
- 05用于 UI 与设备控制的 18 个 MCP 工具
适用场景
- 01测试深色模式、大字体或 RTL 布局
- 02将 Compose 和 Views 布局与设计稿对照测量
- 03检查应用偏好设置或 SQLite 数据
- 04让编码 Agent 操作模拟器并查看日志
MCP 相关
内置 MCP 服务,向 AI Agent 提供截图、UI 树、点击、输入、设备设置、应用、日志和数据等工具。访问权限可设为关闭、只读或完全控制。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Oh My Android
测试 Android 应用在深色模式、大字体、RTL 和 TalkBack 下的表现:每项只需点击一次,无需运行 adb 命令。
一款免费的 Mac 原生 ADB GUI,停靠在 Android Emulator 旁边。也支持真机。
深色模式、字体大小、阿拉伯语 RTL、收到短信和来电。每项只需点击一次。
brew install --cask ateymoori/tap/oh-my-android
或者下载来自 Releases 的已签名、经过公证的 zip · macOS 26 Tahoe+ · Apple silicon · 使用你已有的 Android SDK(详情)· ⭐ 点星支持,让更多 Android 开发者发现它
- 🎛️ 近 50 项测试操作,始终可见。 深色模式、字体和显示大小、语言和区域设置(包括 RTL 和伪区域设置)、TalkBack、粗体文本、布局边界、显示点击、关闭动画、网络速度、GPS、来电和短信。每个图标都会显示设备的实际状态。
- 📐 适用于任何应用的 dp 布局检查器。 将鼠标悬停在视图上,即可查看其大小和周围间距(单位为 dp),Compose 和 Views 均适用。将 Figma 导出文件拖放到上方,对比设计与实现。⇧⌘A 可为 TalkBack 停靠项编号,并标记缺失的标签以及小于 48 dp 的触控目标。
- 🗄️ 无需 adb 即可检查调试版本。 读取 SharedPreferences 和 SQLite、清除数据、打开深层链接、拖放 APK 进行安装、重置权限。
- 🪶 原生且轻量。 使用 SwiftUI,由事件驱动,不含 Electron,也不收集遥测数据。免费且开源(MIT)。
为什么不直接用 Android Studio? Studio 的设备 UI 快捷操作已支持一键切换深色模式、字体大小、 应用语言和 TalkBack(API 33+)。Studio 开启时可使用这些功能。Oh My Android 额外提供一个始终可见的面板, 适用于模拟器和手机,即使 Studio 关闭也能使用;还提供快捷操作不支持的切换项(粗体文本、 伪区域设置、布局边界、显示点击、动画),并可测量任何应用的 dp,而 Studio 的 布局检查器需要应用可调试。与 Studio、scrcpy 和 mobile-mcp 的比较:docs/COMPARISON.md。
🤖 正在使用 Claude Code、Codex 或 Cursor? 此应用内置 MCP 服务(18 个工具),让你的 Agent 可以 以 dp 为单位截取模拟器画面、点击,以及切换深色模式或 RTL。开始设置 →
![]() | ![]() |
| 控制面板 | 布局检查器 + TalkBack 审查 |
功能 · adb 速查表 · 布局检查器 · AI Agent(MCP) · 故障排除 · 常见问题 · 参与贡献 · 网站
## 功能| 你可以做什么 | |
|---|---|
| 🎨 外观 | 深色模式 · 字体大小(0.85× → 2×)· 显示大小 · 语言和区域设置,包括 RTL 和伪本地化 · 旋转 |
| 📦 你的应用(屏幕上显示的任何应用) | 重启 · 清除数据 · 打开深层链接 · 安装 APK(或将其拖到面板上)· 应用信息 · 重置权限 · 强行停止 · 卸载 |
| 📸 捕获 | 截图并保存到剪贴板 · 录制带音频的屏幕 · 质量预设 |
| 🌐 网络 | 模拟 LTE、HSDPA、3G、EDGE、GPRS 或 GSM 的速度和延迟 · 飞行模式 · Wi‑Fi · 移动数据 |
| 📐 布局和性能 | 布局检查器 · 显示布局边界 · GPU 过度绘制 · GPU 性能分析条 · 显示点击 · 指针位置 · 关闭动画(用于 Espresso / Maestro)· 开发者选项 |
| ♿ 无障碍 | 开启/关闭 TalkBack · 粗体文本 · 反转颜色 · TalkBack 顺序审核 |
| 🧭 导航和输入 | 返回 · 主屏幕 · 最近任务 · 在当前焦点字段中输入文本 · 隐藏键盘 |
| 🛰️ 模拟(模拟器) | GPS 位置:城市预设或纬度/经度 · 电池电量 · 充电状态 · 指纹 · 来电 · 收到短信 |
| 💾 快照(模拟器) | 保存干净状态,并在几秒内恢复 |
执行破坏性操作(清除数据、卸载、重置权限)前会先询问。
更新和要求
除了 Homebrew,你也可以从最新版本下载 zip 文件,解压后将 Oh My Android.app 移至 Applications。此应用已由 Apple 签名并公证。
**更新:**有新版本时,菜单栏图标上会显示一个圆点。点击菜单中的 更新至 …,查看更新内容,然后一键安装。应用绝不会未经询问就自行更新。应用每天检查一次;可在 设置 → 更新 中关闭。也可以使用 brew upgrade --cask oh-my-android。
**要求:**macOS 26 Tahoe 或更高版本、Apple 芯片,以及来自 Android Studio 的 Android SDK(或 brew install --cask android-commandlinetools)。应用会自动查找 SDK。如果你的 SDK 位于不常见的文件夹中,可在 设置 → Android SDK 中选择。
不用再输入 adb 命令
每个图标都能替代你原本需要输入或查找的命令:
| 任务 | adb 操作 | Oh My Android |
|---|---|---|
| 在模拟器上开启深色模式 | adb shell cmd uimode night yes | 🌙 一键操作 |
| 增大字体 | adb shell settings put system font_scale 1.3 | Aa − / + |
| 更改设备语言 | adb shell cmd locale set-device-locale sv-SE | 🌐 从菜单中选择 |
| 测试 RTL 布局 | adb shell cmd locale set-device-locale ar-EG | 🌐 “العربية (RTL)” |
| 降低网络速度(3G / EDGE) | adb emu network speed edge + adb emu network delay edge | 选择配置 |
| 模拟 GPS 位置 | adb emu geo fix 18.0686 59.3293 | 选择城市 |
| 为 UI 测试关闭动画 | 3 × adb shell settings put global …_scale 0 | 一键操作 |
| 显示布局边界 | adb shell setprop debug.layout true + 一次系统刷新调用 | 一键操作 |
| 清除应用数据 | 找到软件包,然后执行 adb shell pm clear <package> | 🗑 一键操作 |
| 截图 | adb exec-out screencap -p > shot.png | 📷 已保存并复制 |
| 开启 TalkBack | adb shell settings put secure enabled_accessibility_services … | 一键操作 |
| 打开深层链接 | adb shell am start -a android.intent.action.VIEW -d "myapp://…" | 粘贴并打开 |
布局检查器
冻结屏幕,像在 Figma 中一样测量。支持 Jetpack Compose 和传统 Views。
- 将鼠标悬停在任意元素上,即可查看其 dp 尺寸。点击一个元素,再悬停在另一个元素上,即可查看两者之间的距离 (同级元素之间的间距,以及父元素内部的内边距)。
- 8 dp 网格、取色器(十六进制值,按 ⇧⌘C 复制)和估算的 sp 字号。
- 设计稿叠加层:将 Figma PNG 导出文件拖到窗口中,选择 1× / 2× / 3× 或适合宽度,设置 不透明度或使用差值混合,并用方向键微调位置。逐像素比较设计稿和实现效果。
无障碍审计
在布局检查器中按 ⇧⌘A。每个屏幕阅读器焦点停留点都会按近似的 TalkBack 顺序标上编号,并显示 TalkBack 播报的内容以及问题列表:未标注的按钮、没有内容描述的图像,以及小于 48 × 48 dp 的触控目标。
数据检查器
浏览任意可调试应用的 SharedPreferences(键、类型、值)和 SQLite 数据库(表、前 500 行),
并进行搜索。它使用 adb shell run-as,与 Android Studio 使用的访问方式相同,因此发布构建仍保持封闭。此工具为只读,不会更改设备上的任何内容。
AI Agent(MCP)
Oh My Android 内置了一个 MCP 服务,因此你的 AI 编码 Agent 可以查看并操控模拟器:截屏、读取以 dp 为单位的 UI 树、点击和输入文字、切换深色模式或 RTL、读取 logcat 和应用数据库。Agent 可以构建界面、运行应用、查看结果,并自行修复问题。
这些按钮使用 Homebrew 路径 /opt/homebrew/bin/ohmyandroid-mcp。如果通过 zip 安装,请使用下方菜单栏中的设置方式。
**一步完成设置:**菜单栏图标 → AI Agents → Set Up…,选择你的 Agent,然后点击 Copy(或 Add to Cursor / Add to VS Code)。也可以手动设置:
claude mcp add --scope user oh-my-android -- ohmyandroid-mcp # Claude Code
codex mcp add oh-my-android -- ohmyandroid-mcp # Codex CLI
gemini mcp add --scope user oh-my-android ohmyandroid-mcp # Gemini CLI
{ "mcpServers": { "oh-my-android": { "command": "/Applications/Oh My Android.app/Contents/MacOS/ohmyandroid-mcp" } } }
此 JSON 可用于 Cursor、Claude Desktop、Windsurf、Gemini CLI 和其他 Agent(VS Code 使用 "servers")。
Homebrew 会将 ohmyandroid-mcp 添加到你的 PATH。如果通过 zip 安装,请使用上方的完整路径。
其他添加方式:
- Claude Code 插件:
/plugin marketplace add ateymoori/oh-my-android,然后运行/plugin install oh-my-android@oh-my-android - **Claude Desktop 扩展:**从最新版本打开
oh-my-android-<version>.mcpb - **MCP Registry:**登记为
io.github.ateymoori/oh-my-android
**由你掌控:**菜单栏图标 → AI Agents → Off、Read only 或 Full control。服务会在每次调用时检查权限,因此更改会立即生效。可能导致数据丢失的工具会标记为破坏性操作,Agent 会先征求你的同意。
| 分组 | 工具 |
|---|---|
| 👀 查看 | screenshot(缩放至 1 px = 1 dp)· get_ui(含引用标识的精简 UI 树)· accessibility_audit |
| 👆 操作 | tap(按引用标识、文本或 x,y 点击)· swipe · type_text · press_key |
| 📱 设备 | list_devices · get_device_state · set_device_settings:深色模式、字体缩放、显示大小、区域设置 / RTL、屏幕方向、TalkBack、动画、Wi‑Fi、飞行模式、网络速度、GPS、电池 |
| 📦 应用 | list_apps · open_app(包名或深层链接,并报告冷启动时间)· manage_app · install_apk · logcat |
| 🗄️ 数据 | read_preferences · query_database(在副本上执行只读 SQL) |
| 🧪 模拟器 | emulator_action:指纹、来电、短信、保存 / 加载快照 |
现成的提示词:accessibility_review、ui_matrix(深色模式、大字体、RTL、伪区域设置)和 debug_crash。
试着这样询问你的 Agent:
- “截取模拟器屏幕,并检查此界面在深色模式下的效果。”
- “打开应用,进入设置,在深色模式、字体缩放 2 和阿拉伯语下检查界面。修复出现的问题。”
- “点击保存时应用会崩溃。重现问题、读取崩溃信息并修复。”
- “检查登录界面的 TalkBack 无障碍支持,并在代码中修复问题。”
**专为模型打造:**所有位置都以 dp 为单位,与布局代码一致。输出是精简文本:UI 树比原始 uiautomator XML 小约 10 倍,全部 18 个工具定义总共约占 3k 个 token。此服务通过 stdio 支持 MCP 2026-07-28 及更早版本(2024-11-05 至 2025-11-25),无需依赖,也不需要网络。
隐私与安全
- 🔒 无分析、无遥测、无需账户。 应用自身唯一的网络请求是检查更新:每天一次,从此仓库的 GitHub releases 读取一份小型动态。不会发送任何关于你或设备的信息。可在 Settings → Updates 中关闭。
- 只有在你选择安装时,更新(Sparkle)才会安装;且更新必须使用此项目的 EdDSA 密钥和相同的 Developer ID 签名。
- 只与自己的 Android SDK 中的
adb通信。你输入的文本在传到设备前会进行 shell 引号转义。 - 重新加载和退出应用时,Data Inspector 中的数据库副本都会被删除。
- MCP 服务仅在 AI Agent 启动时运行,且只具有你允许的访问权限。它读取的内容(屏幕、UI、日志、应用数据)会发送给你的 Agent,再由 Agent 发送给其模型提供商。
- 使用 Developer ID 签名,启用强化运行时,并经 Apple 公证。
发现漏洞?请参阅 SECURITY.md。
故障排除
- 找不到 adb: 在 Settings → Android SDK 中选择你的 SDK,或设置
ANDROID_HOME。 - Agent 提示没有设备: 启动模拟器或连接手机,然后让 Agent 运行
list_devices。 - Agent 无法启动
ohmyandroid-mcp(zip 安装): 只有 Homebrew 会将其添加到PATH。请使用完整路径/Applications/Oh My Android.app/Contents/MacOS/ohmyandroid-mcp。 - Homebrew 提示 tap 不受信任: Homebrew 6 及更高版本会要求你信任第三方 tap。完整命令
brew install --cask ateymoori/tap/oh-my-android只会信任此 cask。若要使用短名称,请先运行brew trust --cask ateymoori/tap/oh-my-android。 - Agent 提示“Access is Off”: 菜单栏图标 → AI Agents → Read only 或 Full control。
常见问题
Oh My Android 免费吗?
是的。它基于 MIT 许可证免费开源。
它能取代 Android Emulator 或 Android Studio 吗?
不能。它是一个配套工具,通过你已有的 Android SDK 控制 Google 的模拟器和手机。它不包含模拟器或 SDK。
它能用于真实的 Android 手机吗?
可以,通过 USB 或 Wi‑Fi adb 连接。只有仅适用于模拟器的功能(GPS、电池、通话、SMS、快照、网络速度、屏幕录制)需要模拟器。
它支持 Jetpack Compose 吗?
支持。布局检查器和无障碍审计会通过 uiautomator 读取 Compose 语义树,与读取 Views 的方式相同。
它适用于哪些 AI Agent?
任何支持通过 stdio 使用 MCP 的 Agent:Claude Code、Claude Desktop、Codex CLI、Cursor、VS Code (GitHub Copilot)、Windsurf、Gemini CLI、JetBrains AI、Zed 等。应用无需保持打开;Agent 需要时会启动服务。
如何在 Android Emulator 中开启深色模式?
点击面板中的 🌙 图标。也可以通过 adb 执行 adb shell cmd uimode night yes(执行 no 可关闭)。
如何在 Android Emulator 中测试 RTL 布局?
从 🌐 菜单中选择“العربية (RTL)”或其他 RTL 语言,也可以选择伪区域设置(ar-XB、en-XA),以发现硬编码字符串和镜像错误。也可以通过 adb 执行 adb shell cmd locale set-device-locale ar-EG。
如何在 Android Emulator 中模拟慢速网络?
从网络菜单中选择一个配置(LTE、HSDPA、3G、EDGE、GPRS、GSM)。面板会同时设置速度和延迟,效果与 adb emu network speed edge 和 adb emu network delay edge 相同。
有没有适用于 Claude Code、Codex 或 Cursor 的 Android MCP 服务?
有。ohmyandroid-mcp 随应用一同提供。你的 Agent 可以截取 dp 尺寸的屏幕截图、读取 UI 树、点击、输入文字、切换深色模式、字体大小或 RTL,并读取 logcat。请参阅 AI Agent(MCP)。
有 npx 或 uvx 软件包吗?
没有。该服务是一个无需运行时环境的原生二进制文件;Homebrew 会将 ohmyandroid-mcp 放入你的 PATH。
支持 Windows 或 Linux 吗?
目前不支持。这是一款使用 SwiftUI 构建的 macOS 原生应用。
为什么它不在 Mac App Store 上架?
Mac App Store 应用必须在 App Sandbox 中运行,而沙盒应用无法启动 adb。
Homebrew 和 GitHub 发布版本则由 Apple 签名并公证。
为什么要求 macOS 26 或更高版本?
该面板使用了 Liquid Glass 及其他 macOS 26 Tahoe 新增的 API。
brew install xcodegen
git clone https://github.com/ateymoori/oh-my-android.git && cd oh-my-android
xcodegen generate
open OhMyAndroid.xcodeproj
需要 Xcode 26。本地构建使用临时签名,因此无需 Apple Developer 账户。
架构
Sources/
App/ entry point, AppDelegate (host actions), Settings, assets
Core/ no UI, no feature knowledge
Shell/ ShellRunning: non-blocking Process runner, stopped on timeout or cancellation
Android/ AndroidSDK, ADBClient, DeviceTracker (adb track-devices), UI hierarchy, app data
SQLite/, Imaging/
Features/ one small type per capability, registered in FeatureCatalog (Foundation only)
MCP/ ohmyandroid-mcp: stdio MCP server built on Core and Features, shipped inside the app
State/ AppModel (composition root), DeviceStore, FeatureStore, inspector stores
Windows/ FloatingPanel, emulator window docking, tool windows
UI/ SwiftUI; FeatureCell renders any feature from its protocol
依赖方向单一:UI → State → Features → Core。功能通过 ADBClient 协议与设备交互,并通过 HostActions(文件选择器、剪贴板、Finder)与 Mac 交互,因此每个功能都是一个小型值类型。使用 Swift 6 语言模式、严格并发检查,零警告。
| 协议 | 控件 | 示例 |
|---|---|---|
ToggleFeature | 开/关图标 | 深色模式、TalkBack、Wi‑Fi |
BatchReadable (附加项) | 在一次共享的 adb shell 往返中读取状态 | 所有 settings / getprop 功能 |
StepperFeature | 带 − / + 的弹出框 | 字体大小、显示大小 |
ChoiceFeature | 菜单 | 语言、网络速度、电池 |
ActionFeature | 点按一次 | 截屏、旋转、强制停止 |
TextActionFeature | 带文本框的弹出框 | 深层链接、输入文本、短信 |
**能耗:**不会进行轮询。设备变化来自 adb 的 track-devices 流。选择设备、执行操作后,以及指针返回面板时,都会通过一次批处理 adb shell 调用读取功能值。仅在模拟器运行且面板可见时,停靠功能才使用 1 Hz 计时器。
应用和菜单栏图标由代码绘制:Scripts/make-icon.swift。
路线图
- 对比模式:并排显示两台设备、镜像输入、像素差异对比
- 在面板窗口中嵌入模拟器屏幕
- 在数据检查器中支持 DataStore(
.preferences_pb) - MCP:启动和停止模拟器、录制屏幕
有想法?提交功能请求。 添加功能只需编写一个小型 Swift 结构体:请参阅 CONTRIBUTING.md。
⭐ 如果 Oh My Android 为你节省了时间,请为此仓库点星。
星标能帮助其他 Android 开发者发现它,也能表明值得开发新功能。
如需接收每个新版本的通知,请点击 Watch → Custom → Releases。
许可证
Android 是 Google LLC 的商标。Oh My Android 与 Google 无关联,也未获其认可。 Android 机器人是根据 Creative Commons 3.0 Attribution License 中所述条款,复制或修改自 Google 创作并分享的作品。
由瑞典 🇸🇪 的 Royan AB 制作
Oh My Android 网站 · royan.se
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。

