# 工作手机SDK v3.0 - 系统架构说明 ## 一、整体架构图 ``` ┌──────────────────────────────────────────────────────────────────┐ │ 你的Mac电脑 │ │ │ │ ┌─────────────────────┐ ┌─────────────────────────────────┐ │ │ │ SDK服务 (Python) │ │ Android模拟器/真机 │ │ │ │ │ │ │ │ │ │ FastAPI服务器 │◄───┤ emulator-5554 │ │ │ │ 端口: 8899 │ADB │ (RedMi13模拟器) │ │ │ │ │命令│ │ │ │ │ 位置: │ │ 运行的APP: │ │ │ │ sdk/app/main.py │ │ - 豆包 │ │ │ │ │ │ - Chrome │ │ │ └─────────────────────┘ │ - 设置 │ │ │ ▲ │ │ │ │ │ HTTP API │ 位置: │ │ │ │ │ ~/.android/avd/RedMi13.avd │ │ │ ▼ └─────────────────────────────────┘ │ │ ┌─────────────────────┐ ▲ │ │ │ 存客宝后端 (PHP) │ │ │ │ │ │ │ USB/WiFi │ │ │ 调用SDK的API │ │ │ │ └─────────────────────┘ ┌──────┴──────┐ │ │ │ scrcpy窗口 │ │ │ │ (屏幕镜像) │ │ │ └─────────────┘ │ └──────────────────────────────────────────────────────────────────┘ ``` ## 二、各组件位置 | 组件 | 位置 | 说明 | |------|------|------| | **SDK服务端** | `/Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/app/` | Python FastAPI服务 | | **SDK配置** | `/Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/.env` | 环境变量配置 | | **PHP客户端** | `/Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/php-sdk/` | 存客宝调用SDK的库 | | **模拟器AVD** | `~/.android/avd/RedMi13.avd/` | Android虚拟设备文件 | | **ADB工具** | `/usr/local/share/android-commandlinetools/` | Android调试桥 | ## 三、通信流程详解 ### 流程1:存客宝发送微信消息 ``` 存客宝后端 SDK服务 手机/模拟器 │ │ │ │ 1. HTTP POST │ │ │ /api/v3/message/send │ │ │ {device_id, platform, │ │ │ to_id, content} │ │ │─────────────────────────►│ │ │ │ │ │ │ 2. adb shell命令 │ │ │ 启动微信、搜索联系人、 │ │ │ 点击、输入、发送 │ │ │─────────────────────────────►│ │ │ │ │ │ 3. 操作完成 │ │ │◄─────────────────────────────│ │ │ │ │ 4. 返回结果 │ │ │ {success: true, │ │ │ message_id: xxx} │ │ │◄─────────────────────────│ │ ``` ### 流程2:截图 ``` 存客宝后端 SDK服务 手机/模拟器 │ │ │ │ POST /screenshot │ │ │─────────────────────────►│ │ │ │ adb exec-out screencap -p │ │ │─────────────────────────────►│ │ │ │ │ │ 返回PNG图片数据 │ │ │◄─────────────────────────────│ │ │ │ │ {base64: "iVBORw0..."} │ │ │◄─────────────────────────│ │ ``` ## 四、核心技术原理 ### 4.1 ADB (Android Debug Bridge) ADB是Android官方的调试工具,SDK通过它控制手机: ```bash # 查看连接的设备 adb devices # 截图 adb exec-out screencap -p > screen.png # 点击屏幕坐标 adb shell input tap 540 1200 # 滑动 adb shell input swipe 540 1800 540 600 500 # 输入文字 adb shell input text "Hello" # 启动APP adb shell am start -n com.tencent.mm/.ui.LauncherUI # 按键 adb shell input keyevent KEYCODE_BACK ``` ### 4.2 SDK将ADB封装成HTTP API ```python # sdk/app/services/adb_device.py class ADBDevice: def click(self, x: int, y: int): """点击坐标""" self._shell(f"input tap {x} {y}") def screenshot(self): """截图""" result = subprocess.run( ["adb", "-s", self.serial, "exec-out", "screencap", "-p"], capture_output=True ) return base64.b64encode(result.stdout) ``` ### 4.3 存客宝通过PHP调用 ```php // 存客宝后端代码 $sdk = new WorkPhoneClient('http://localhost:8899', 'api-key'); // 发送消息 $sdk->sendMessage('emulator-5554', 'wechat', '张三', '你好'); // 截图 $screenshot = $sdk->screenshot('emulator-5554'); ``` ## 五、实际运行的进程 ```bash # 1. SDK服务进程 ps aux | grep python # Python 63973 ... uvicorn main:app --host 0.0.0.0 --port 8899 # 2. 模拟器进程 ps aux | grep emulator # emulator -avd RedMi13 -no-snapshot -gpu host # 3. ADB服务进程 ps aux | grep adb # adb -L tcp:5037 fork-server server # 4. scrcpy屏幕镜像 ps aux | grep scrcpy # scrcpy -s emulator-5554 --window-title "红米13模拟器" ``` ## 六、文件关系图 ``` sdk/ ├── app/ # SDK服务端 │ ├── main.py # FastAPI入口 (监听8899端口) │ ├── config.py # 配置 │ ├── routers/ │ │ ├── adb.py # ADB设备控制API │ │ ├── devices.py # 设备管理API │ │ └── unified.py # 统一消息API │ └── services/ │ └── adb_device.py # ADB命令封装 │ ├── php-sdk/ │ └── WorkPhoneClient.php # 存客宝用的PHP客户端 │ └── agent/ # 手机端Agent (可选) └── agent.py # 运行在手机上的程序 ``` ## 七、为什么这样设计 ### 优点 1. **无需ROOT** - 使用官方ADB接口,不需要ROOT手机 2. **跨平台** - 支持任何Android APP,不限于微信 3. **成本低** - 不依赖第三方服务商 4. **可扩展** - 可以添加AI Agent实现智能控制 ### 与奥创的区别 | 特性 | 自研SDK | 奥创 | |------|---------|------| | 控制方式 | ADB命令 | Hook注入 | | 需要ROOT | 否 | 是 | | 支持APP | 任意APP | 仅微信 | | 月费用 | 服务器成本(~500元) | 500元/台 | | 稳定性 | 高(官方接口) | 中(可能被检测) |