48 lines
1.4 KiB
Markdown
48 lines
1.4 KiB
Markdown
# Kordophone Android Client
|
||
|
||
Android client for the Kordophone iMessage bridge. This app connects to a running Kordophone server over HTTP/JSON and streams updates.
|
||
|
||
Note: This client currently implements its own API layer in Kotlin and does not yet use the shared Rust `core` library.
|
||
|
||
## Build & Run
|
||
|
||
Requirements:
|
||
|
||
- Android Studio (AGP 8.x)
|
||
- JDK 8+ toolchain (project uses Java 8 bytecode)
|
||
|
||
Steps:
|
||
|
||
1. Open `android/` in Android Studio.
|
||
2. Sync Gradle and build the project.
|
||
3. Run the `app` configuration on an emulator or device.
|
||
|
||
The app targets `minSdk 30`, `targetSdk 33` and uses Jetpack Compose.
|
||
|
||
## Configure Server
|
||
|
||
Set the server host and optional Basic Auth from the app’s Settings screen.
|
||
|
||
- Server URL for local mock (emulator): `http://10.0.2.2:5738`
|
||
- Server URL for local mock (device): `http://<your-host-ip>:5738`
|
||
- Credentials: match the server if auth is enabled (mock supports `--auth`).
|
||
|
||
Settings are persisted using `EncryptedSharedPreferences`.
|
||
|
||
## Modules
|
||
|
||
- `app/` — UI (Compose), DI (Hilt), app wiring
|
||
- `backend/` — Kotlin API client, DB/cache (Realm), models, tests
|
||
|
||
## Testing with the Mock Server
|
||
|
||
Start the mock server in the repo root:
|
||
|
||
```bash
|
||
cd mock
|
||
go run ./... # or: make; ./kordophone-mock
|
||
```
|
||
|
||
Set the app’s server URL to the mock address and run. The mock exposes `/conversations`, `/messages`, `/sendMessage`, `/attachment`, `/updates` and more.
|
||
|