最近 OpenClaw 项目热度很高,我也开始学习和探索。本文记录了我学习过程中,将 Android 设备接入 OpenClaw Gateway 的完整流程,涵盖了环境准备、应用编译、Gateway 配置及最终连接,并特别记录了针对较旧 Android 设备的适配方法。
🎯 学习目标
- 在 Android 手机上安装并运行 OpenClaw 客户端;
- 将手机设备接入本地 OpenClaw Gateway;
✅ 适用于个人开发、远程调试、家庭自动化场景。
🔧 准备工作
1. 环境要求
| 组件 | 版本/说明 |
|---|---|
| 操作系统 | Linux / macOS / Windows |
| Java JDK | JDK 21 (Windows) |
| Gradle | 8.0+ |
| Android SDK Tools | platform-tools, build-tools |
| Android 手机 | 支持 Android 10 (API 29),已开启 USB 调试 |
📱 第一步:搭建 Android 开发环境
我们需要为 OpenClaw 官方 Android 应用进行编译与安装。
1. 安装 Android SDK 工具
bash
# 使用 sdkmanager 安装必要的组件
sdkmanager "platform-tools" "build-tools;34.0.0"
2. 克隆 OpenClaw 代码仓库
bash
git clone https://github.com/openclaw/openclaw.git
cd openclaw
进入 Android 应用目录:
bash
cd apps/android
3. 适配旧版 Android 设备 (重要)
由于我的 Android 设备较旧,需要对源码进行关键修改以确保兼容性。
修改一:降低最低支持版本 (minSdk)
打开 apps\android\app\build.gradle.kts 文件,将 minSdk 从默认值修改为 29。
kotlin
android {
// ...
defaultConfig {
applicationId = "ai.openclaw.app"
minSdk = 29 // 修改这里,对应 Android 10
targetSdk = 34
versionCode = 1
versionName = "1.0"
// ...
}
// ...
}
✅ 这样做是为了兼容 Android 10 (API 29) 及更高版本的设备。
修改二:禁用动态颜色 (Dynamic Color)
打开 openclaw\apps\android\app\src\main\java\ai\openclaw\app\ui\OpenClawTheme.kt 文件,将 dynamicColor 的判断逻辑修改如下。
这个修改至关重要,因为 Android 12 (API 31) 以下的系统不支持 Material You 的动态颜色主题,会导致应用崩溃。
kotlin
@Composable
fun OpenClawTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
// 使用动态颜色需要 API 31+
dynamicColor: Boolean = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S,
content: @Composable () -> Unit
) {
val colorScheme = when {
// 动态颜色仅支持 Android 12+
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
if (darkTheme) {
androidx.compose.material3.dynamicDarkColorScheme(LocalContext.current)
} else {
androidx.compose.material3.dynamicLightColorScheme(LocalContext.current)
}
}
darkTheme -> darkColorScheme()
else -> lightColorScheme()
}
MaterialTheme(
colorScheme = colorScheme,
content = content
)
}
✅ 通过此修改,应用将只为 Android 12 及以上系统启用动态颜色,旧系统则使用预设的主题色,保证了应用的稳定运行。
4. 编译并安装 APK
确保你的手机已开启 开发者选项 和 USB 调试模式,并通过 USB 连接电脑。
执行以下命令编译并安装:
bash
./gradlew :app:assembleDebug
./gradlew :app:installDebug
✅ 成功后,手机会自动安装名为 "OpenClaw" 的应用。
⚙️ 第二步:配置 OpenClaw Gateway
1. 修改 config.json
在 OpenClaw 根目录下找到 config.json 文件,添加或修改如下内容:
json
{
"gateway": {
"port": 18789,
"mode": "local",
"bind": "lan",
"controlUi": {
"allowedOrigins": [
"http://127.0.0.1:18789"
]
},
"auth": {
"mode": "token",
"token": "your-secret-token-here"
},
"nodes": {
"denyCommands": [
"screen.record",
"contacts.add",
"calendar.add",
"reminders.add",
"sms.send"
]
}
}
}
🔐
token可自定义,建议使用强随机字符串(例如:openssl rand -base64 32生成)。🛑
denyCommands列表可防止敏感操作被远程触发,提升安全性。
2. 启动 Gateway
bash
npm run start
此时服务将在 http://localhost:18789 上启动,并显示连接状态页。
🔗 第三步:生成二维码并连接设备
1. 设置 OpenClaw 环境变量(可选)
如果你希望绕过 TLS 验证(仅用于本地测试),可以设置:
bash
set OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1
⚠️ Windows 环境 使用
set命令设置临时环境变量。
2. 初始化并生成连接信息
首先运行设置向导,它会引导你完成基本配置:
bash
openclaw setup
然后,根据向导结果或手动指定的 URL 和 Token,生成用于连接的二维码:
bash
openclaw qr --url ws://YOUR_GATEWAY_IP:18789 --token your-secret-token-here
📝 请将
YOUR_GATEWAY_IP替换为你运行 OpenClaw Gateway 的服务器或本机的实际 IP 地址。
3. 扫描二维码并授权
打开手机上的 OpenClaw App,点击"扫描二维码",扫描电脑端生成的 QR 码。
App 会提示你:
- 授权相机、麦克风、位置等权限;
- 点击"链接"按钮建立连接。
✅ 第四步:批准设备连接
当设备发起连接后,它会处于待审批状态。你可以通过以下命令查看待处理的连接请求:
bash
openclaw devices
列表中会显示待批准的设备及其 requestId。
执行批准命令,将 REQUEST_ID 替换为实际的请求ID:
bash
openclaw devices approve REQUEST_ID
完成此步骤后,设备即被正式加入到你的 OpenClaw 网络中。
📊 第五步:验证连接状态
访问 Web 控制台:http://localhost:18789
你应该能看到:
- Active endpoint : 如
192.168.96.141:18789 - Gateway state :
Connected (node offline)--- 表示设备已连接但尚未激活 - Disconnect Gateway 按钮可用
点击 Chat 标签页,即可发送消息测试通信是否正常。
注意:需要在 Android 上授予相机权限,且设备支持前置/后置摄像头。
📚 参考资料
🚀 总结
通过以上步骤,特别是针对旧版 Android 设备的关键代码修改,我成功地将一台 Android 10 设备接入了 OpenClaw 系统。
注意:本文只记录了如何完成设备的基本接入,至于接入后能用它来做什么、怎么深入玩转,我还在继续学习中。
📌 关键词:OpenClaw, Android, 远程控制, 设备接入, 二维码连接, gateway, 摄像头, 安全认证, 低版本适配
如果你也在学习 OpenClaw,希望这篇记录对你有所帮助。