The pre-built APK on the Releases page is the fastest way to get Xolo running on Android. Building from source is the right choice when you want to run Xolo on iOS, contribute a feature or bug fix, customise the app config, or simply verify the build yourself. This guide covers everything from prerequisites through to a signed release APK using the same steps the CI pipeline follows.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/JonathanHerSa/xolo-api-hub/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before cloning the repository, make sure the following tools are installed and available on yourPATH.
| Requirement | Version | Notes |
|---|---|---|
| Flutter SDK | ≥ 3.32.0 | Pinned to 3.32.0 in CI (release.yml). Use FVM to manage multiple Flutter versions. |
| Dart SDK | ^3.10.4 | Bundled with Flutter — no separate install needed. |
| Android SDK | API 21+ | Required for Android builds. Android Studio or the standalone command-line tools both work. |
| Xcode | Latest stable | Required for iOS builds (macOS only). |
| CocoaPods | Latest stable | Required for iOS dependency resolution (pod install). |
| Java | 17 | Required by the Android Gradle toolchain. The CI uses Zulu 17. |
Build from Source
Install dependencies
Fetch all Dart and Flutter packages declared in This resolves Riverpod, Drift, Dio, go_router, and all other dependencies into the local
pubspec.yaml:.dart_tool cache.Run code generation (Drift)
Xolo uses Drift for reactive SQLite persistence. Drift requires generated code (The
*.g.dart files) that is not committed to the repository. You must run build_runner before the app will compile:--delete-conflicting-outputs flag automatically resolves stale generated files from a previous run. Re-run this command any time you modify a Drift table definition or add a new @DriftDatabase class.Run on Android
Connect a physical Android device via USB (with USB Debugging enabled) or start an Android emulator, then launch the app:Flutter detects the connected device automatically. If multiple devices are attached, add
-d <device-id> to target a specific one.Run on iOS
iOS builds require macOS with Xcode installed. First install CocoaPods dependencies, then run the app:On the first run, Xcode may prompt you to set a development team in the project signing settings. Open
ios/Runner.xcworkspace in Xcode and set your Apple Developer Team under Signing & Capabilities.Build Release APK
To produce an unsigned release APK — the same artifact published to GitHub Releases by CI — run:.github/workflows/release.yml, which uploads this exact file as the GitHub Release asset whenever a v* tag is pushed.
Environment Variables / App Config
Xolo does not use a.env file or any external secrets file. All application-level configuration is defined directly in:
flutter_secure_storage at runtime and are never written to the source tree.
Running Tests
Xolo enforces a 100% coverage gate in CI, excluding generated*.g.dart files, Drift schema tables, and localisation files. Run the full test suite locally with coverage reporting:
coverage/lcov.info. Use genhtml (from the lcov package) to render an HTML report: