コンテンツにスキップ

OpenClaw Androidアプリ構築ガイド:ソースからビルドする方法

開発を進める中で、デスクトップの強力なツールをモバイルデバイスと連携させたい場面は多いですよね。しかし、モバイル特有のネットワーク制限やセンサーへのアクセスを統合するのは、意外と手間がかかるものです。

OpenClaw を使えば、Android デバイスを一つの Node として扱い、Gateway 経由でコントロールできるようになります。今回はそのセットアップ方法と活用術について解説します。

注意: Android アプリはまだ一般公開されていません。ソースコードは OpenClaw リポジトリ の apps/android で公開されています。Java 17 と Android SDK を使用して、自分でビルドすることが可能です (./gradlew :app:assembleDebug)。ビルド手順については apps/android/README.md を参照してください。

  • 役割: コンパニオン Node アプリ(Android は Gateway をホストしません)。
  • Gateway の要否: 必要です(macOS、Linux、または WSL2 上の Windows で実行してください)。
  • インストール: Getting Started + Pairing。
  • Gateway: Runbook + Configuration。

システム制御(launchd/systemd)は Gateway ホスト上で行います。詳細は Gateway を参照してください。

Android node アプリ ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway

Android は Gateway の WebSocket(デフォルトは ws://<host>:18789)に直接接続し、デバイスペアリング(role: node)を使用します。

  • 「マスター」マシンで Gateway を実行できること。
  • Android デバイスまたはエミュレーターが Gateway の WebSocket に到達できること:
    • mDNS/NSD を使用した同一 LAN 内。
    • または、Wide-Area Bonjour / ユニキャスト DNS-SD を使用した同一 Tailscale tailnet(詳細は後述)。
    • または、手動での Gateway ホスト/ポート指定(フォールバック)。
  • Gateway マシン上(または SSH 経由)で CLI (openclaw) を実行できること。
Terminal window
openclaw gateway --port 18789 --verbose

ログに以下のような内容が表示されているか確認してください:

  • listening on ws://0.0.0.0:18789

Tailnet 限定のセットアップ(ウィーン ⇄ ロンドン間などでおすすめです)の場合は、Gateway を Tailnet IP にバインドします:

  • Gateway ホストの ~/.openclaw/openclaw.json で gateway.bind: "tailnet" を設定します。
  • Gateway または macOS メニューバーアプリを再起動します。

2) ディスカバリの確認(任意)

Section titled “2) ディスカバリの確認(任意)”

Gateway マシンから以下を実行します:

Terminal window
dns-sd -B _openclaw-gw._tcp local.

デバッグに関する詳細はこちら:Bonjour。

ユニキャスト DNS-SD による Tailnet (ウィーン ⇄ ロンドン) ディスカバリ

Section titled “ユニキャスト DNS-SD による Tailnet (ウィーン ⇄ ロンドン) ディスカバリ”

Android の NSD/mDNS ディスカバリはネットワークを越えることができません。Android Node と Gateway が異なるネットワークにあり、Tailscale で接続されている場合は、代わりに Wide-Area Bonjour / ユニキャスト DNS-SD を使用してください:

  1. Gateway ホストで DNS-SD ゾーン(例:openclaw.internal.)をセットアップし、_openclaw-gw._tcp レコードを公開します。
  2. Tailscale の Split DNS を設定し、選択したドメインがその DNS サーバーを指すようにします。

詳細と CoreDNS の設定例はこちら:Bonjour。

Android アプリでの操作:

  • アプリは Foreground Service(常駐通知)を介して Gateway 接続を維持します。
  • Connect タブを開きます。
  • Setup Code または Manual モードを使用します。
  • ディスカバリがブロックされている場合は、Advanced controls で手動のホスト/ポート(および必要に応じて TLS/トークン/パスワード)を使用してください。

最初のペアリングに成功すると、次回以降アプリ起動時に自動再接続されます:

  • 手動エンドポイント(有効な場合)。
  • または、最後に検出された Gateway(ベストエフォート)。

Gateway マシンで以下を実行します:

Terminal window
openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>

ペアリングの詳細はこちら:Pairing。

  • Node のステータス経由:

    Terminal window
    openclaw nodes status
  • Gateway 経由:

    Terminal window
    openclaw gateway call node.list --params "{}"

Android の Chat タブはセッション選択(デフォルトは main、その他既存のセッションも可)をサポートしています:

  • 履歴: chat.history
  • 送信: chat.send
  • プッシュ更新(ベストエフォート): chat.subscribe → event:"chat"

Gateway Canvas Host (Web コンテンツにおすすめ)

Section titled “Gateway Canvas Host (Web コンテンツにおすすめ)”

Node に、エージェントがディスク上で編集できる実際の HTML/CSS/JS を表示させたい場合は、Node を Gateway の Canvas ホストに向けます。

注意: Node は Gateway の HTTP サーバー(gateway.port と同じポート、デフォルトは 18789)から Canvas を読み込みます。

  1. Gateway ホストに ~/.openclaw/workspace/canvas/index.html を作成します。

  2. Node をその URL に移動させます(LAN 内):

Terminal window
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18789/__openclaw__/canvas/"}'

Tailnet(任意): 両方のデバイスが Tailscale 上にある場合は、.local の代わりに MagicDNS 名または Tailnet IP を使用してください(例:http://<gateway-magicdns>:18789/__openclaw__/canvas/)。

このサーバーは HTML にライブリロードクライアントを注入し、ファイルが変更されると自動的にリロードします。 A2UI ホストは http://<gateway-host>:18789/__openclaw__/a2ui/ にあります。

Canvas コマンド(フォアグラウンドのみ):

  • canvas.eval, canvas.snapshot, canvas.navigate(デフォルトの画面に戻るには {"url":""} または {"url":"/"} を使用)。canvas.snapshot は { format, base64 } を返します(デフォルトは format="jpeg")。
  • A2UI: canvas.a2ui.push, canvas.a2ui.reset (canvas.a2ui.pushJSONL はレガシーなエイリアスです)。

カメラコマンド(フォアグラウンドのみ、パーミッションが必要):

  • camera.snap (jpg)
  • camera.clip (mp4)

パラメータと CLI ヘルパーについては Camera node を参照してください。

8) Voice + Android コマンドサーフェスの拡張

Section titled “8) Voice + Android コマンドサーフェスの拡張”
  • Voice: Android は Voice タブでマイクのオン/オフを切り替えるフローを使用し、文字起こしと TTS 再生(設定時は ElevenLabs、フォールバックとしてシステム TTS)を行います。アプリがフォアグラウンドから外れると Voice は停止します。
  • Voice のウェイクワードやトークモードの切り替え機能は、現在 Android の UX/ランタイムから削除されています。
  • その他の Android コマンドファミリー(デバイスや権限によって利用可否が異なります):
    • device.status, device.info, device.permissions, device.health
    • notifications.list, notifications.actions
    • photos.latest
    • contacts.search, contacts.add
    • calendar.events, calendar.add
    • callLog.search
    • motion.activity, motion.pedometer

困ったことがあれば、AI Setup Assistant に聞いてみてくださいね。

OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。