---
number: 7
title: The two phones — Android APK
date: 2026-08-03
summary: A tap-to-download .apk on the deliverables page, built from the same unchanged Stage 3 client as the browser link, connecting to the same droplet-hosted world — proof this runs on real hardware in someone's hand, not just a desktop browser tab.
epic: server-architecture
status: delivered
due-with: server-architecture/009
artifacts: ["land-of-lor/pocs/multiplayer-poc/world-server/export_presets.cfg","land-of-lor/pocs/multiplayer-poc/handoff/task-009-android-export.md"]
cta: [object Object]
---

Also a promise made ahead of the work — see [deliverable #6](/deliverables/6) for the same note on why this file exists before the thing it describes does, and `epics/README.md`'s "Promised deliverables" section for the convention itself.

## What this will be

The proof that "the client is substantially an interface" (`server-architecture`'s architecture stance) holds up off a desktop, too: two actual Android phones, each running an installed app, standing in the same physical room as each other but talking through the droplet — one seeing the other's player character move in real time.

## Acceptance criteria

- A tap-to-download `.apk` link on the deliverables page.
- The APK installs on Android.
- It connects to the **same droplet-hosted world** deliverable #6's web client connects to — not a separate build, not a separate server.
- **Two phones, each seeing the other's player move** in the same world.

## Scope note

This is an **export target, not new game code** — the unchanged Stage 3 client (`server-architecture/007`), packaged for Android instead of (or alongside) the web. See `server-architecture/009` for the task this ships with: Android export preset, SDK/JDK/signing setup, and hosting the resulting APK with a download link from this site. Zero new gameplay or netcode is expected as part of this.

## Artifacts

- **Download link:** _pending — appears here once `server-architecture/009` lands and the APK is hosted._

## Delivered 2026-08-04 — the APK is live; the two-phone moment is Kris's

The button above downloads a debug-signed arm64 APK (~28 MB) of the exact same Stage 3 client the browser link runs — same server, same protocol, same commons world, packaged for Android instead of the web. Hosted on the droplet itself (`/download/*` via Caddy over HTTPS), not in git.

Two small things an installed phone build needed that a browser tab didn't (details and rationale in `land-of-lor/pocs/multiplayer-poc/handoff/task-009-android-export.md`): a baked-in default director URL (a phone app has no query string — mobile builds default to the live `wss://` director), and tap-to-move (a phone has no arrow keys; tap anywhere to step toward the tap — the same `move_intent` a keypress sends).

Verified at packaging time: manifest correct (`INTERNET` permission, arm64, right package name), Godot's own APK verification passed, download URL live with the correct MIME type, and the underlying client/protocol live-verified the same day (web two-tab check by Kris; `verify-public-world` 5/5). **Not yet verified — no Android device was attached to the build machine: the install itself, and the acceptance bar this deliverable is named for, two phones in the same room seeing each other move.** Android will warn about installing an unknown (debug-signed) app; that's expected at this stage.