https://github.com/getarcaneapp/android
The offical Android app for Arcane
https://github.com/getarcaneapp/android
Last synced: 11 days ago
JSON representation
The offical Android app for Arcane
- Host: GitHub
- URL: https://github.com/getarcaneapp/android
- Owner: getarcaneapp
- License: bsd-3-clause
- Created: 2026-06-02T02:20:47.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-07-08T23:35:14.000Z (14 days ago)
- Last Synced: 2026-07-09T00:11:00.179Z (14 days ago)
- Language: Kotlin
- Size: 1.13 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
> [!IMPORTANT]
> This project is still under development and is not intended to be used on devices yet.
## About
Arcane Mobile is the official Android companion for [Arcane](https://github.com/getarcaneapp/arcane). It connects to any Arcane manager or agent and lets you browse and operate your Docker environments — containers, images, volumes, networks, and Compose projects — from your phone.
## Documentation
For setup instructions, configuration details, and development guides, visit the **[official documentation site](https://getarcane.app)**.
For continuation context from the currently running Android app, see [`docs/current-app-state.md`](docs/current-app-state.md).
## Requirements
- Android 7.0 (API 24) or later
- An Arcane server reachable over HTTPS
## Building
This is a [Jetpack Compose](https://developer.android.com/compose) app written in Kotlin, using Material 3 and a single-Activity, multi-tab navigation shell.
| Toolchain | Version |
| --- | --- |
| Android Gradle Plugin | 9.1.1 |
| Gradle | 9.4.1 |
| Kotlin | 2.2.10 |
| JDK | 21 |
Open the project in **Android Studio** (Quail Feature Drop or later) and let it sync, or build from the command line:
```sh
./gradlew :app:installDebug
```
Run the same checks used by CI with:
```sh
./gradlew :app:testDebugUnitTest :app:assembleDebug
```
Release APK signing is optional for local builds. To sign a release APK, provide:
```sh
ARCANE_RELEASE_STORE_FILE=/path/to/arcane-release.jks
ARCANE_RELEASE_STORE_PASSWORD=...
ARCANE_RELEASE_KEY_ALIAS=...
ARCANE_RELEASE_KEY_PASSWORD=...
./gradlew :app:assembleRelease
```
GitHub Actions builds and uploads a debug APK for pull requests and branch pushes.
For tags matching `v*`, it also builds a signed release APK and attaches it to the
GitHub Release when signing secrets are configured. Tags without signing secrets
still build and upload the debug APK artifact. Configure these repository secrets
before cutting a signed release tag:
- `ARCANE_RELEASE_KEYSTORE_BASE64`
- `ARCANE_RELEASE_STORE_PASSWORD`
- `ARCANE_RELEASE_KEY_ALIAS`
- `ARCANE_RELEASE_KEY_PASSWORD`
Fastlane/F-Droid metadata lives under `fastlane/metadata/android/en-US/`.
### Android Studio run configuration
Open the repository root (the directory containing `settings.gradle.kts`) in
Android Studio. After Gradle sync, the project should expose a single Android
application module/source set named `arcane-android.app.main` (shown in some
Android Studio dialogs as `app` or `app.main`).
A shared **Android App** run configuration named `Arcane Android` is checked in
under `.run/`. If Android Studio does not pick it up automatically, create one
manually with:
- Module: `arcane-android.app.main` (or the `app`/`app.main` entry Android Studio shows)
- Launch: Default Activity (`app.getarcane.android/.MainActivity`)
- Deploy target: any API 24+ emulator or device
The checked-in manifest already marks `MainActivity` as the launcher activity,
so no custom activity arguments are required.
The app depends on [`libarcane-kotlin`](https://github.com/getarcaneapp/libarcane-kotlin) — the Kotlin SDK that talks to the Arcane API. By default, Gradle resolves the SDK from the sibling `../libarcane-kotlin` Git checkout when it exists; otherwise it resolves the SDK from the public Git repository on the `main` branch and builds it on demand. No separate publish step is needed.
To force the public Git source dependency even when the sibling checkout exists, pass `-Parcane.remoteSdk`:
```sh
./gradlew :app:installDebug -Parcane.remoteSdk
```
### Running on an emulator
A helper script boots the `arcane` AVD with public DNS servers (needed for the hosted demo to resolve):
```sh
./run-emulator.sh
```
## Reporting Issues
Found a bug or have a feature request? [Open an issue on GitHub](https://github.com/getarcaneapp/android/issues).
## Translating
Help translate Arcane on Crowdin: https://crowdin.com/project/arcane-docker-management
Thank you for checking out Arcane Mobile! Your feedback and contributions are always welcome.