Skip to content

getarcaneapp/android

Repository files navigation

Important

This project is still under development and is not intended to be used on devices yet.

Arcane Logo

Arcane Mobile — Manage your Docker hosts from Android.

License Discord


About

Arcane Mobile is the official Android companion for 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.

For continuation context from the currently running Android app, see 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 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:

./gradlew :app:installDebug

Run the same checks used by CI with:

./gradlew :app:testDebugUnitTest :app:assembleDebug

Release APK signing is optional for local builds. To sign a release APK, provide:

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 — 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:

./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):

./run-emulator.sh

Reporting Issues

Found a bug or have a feature request? Open an issue on GitHub.

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.

About

The offical Android app for Arcane

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors