Building
Build the Flutter App with the repository’s fl_build tool. Monitor agent is
a separate Rust service and has its own build steps.
Prerequisites
Section titled “Prerequisites”- Flutter SDK on the stable channel
- Platform SDKs: Xcode for iOS, Android Studio and Android SDK for Android, or Visual Studio for Windows
- Rust toolchain: the App builds
crates/sbm_ffiusing a Dart build hook,flutter_rust_bridge_hooks, and native assets
Initialize the Git submodules before fetching Dart packages:
git submodule update --init --recursiveRun a development build
Section titled “Run a development build”# Run on the default deviceflutter run
# Select a device explicitlyflutter run -d <device-id>Release build
Section titled “Release build”Pass the target platform to fl_build:
dart run fl_build -p <platform>Supported platform names are ios, android, macos, linux, and
windows.
Platform requirements
Section titled “Platform requirements”dart run fl_build -p iosBuilds require macOS and Xcode. Signing also requires an Apple Developer account.
Android
Section titled “Android”dart run fl_build -p androidRequires the Android SDK, a JDK, and a keystore for release signing. Release
builds must use the keystore configured in key.properties. For local
verification only, pass -PallowDebugReleaseSigning=true explicitly to use
debug signing. Reproducible and F-Droid builds use
-PallowUnsignedRelease=true, which omits signing configuration;
scripts/release/android-build-env.sh exports this option.
dart run fl_build -p macosdart run fl_build -p linuxWindows
Section titled “Windows”dart run fl_build -p windowsRequires Visual Studio with the Desktop development with C++ workload and ATL support.
Build Monitor agent
Section titled “Build Monitor agent”Monitor agent is a standalone server binary. Build it separately from the Flutter App:
# From the repository rootcargo build --release
# Build the web panelcd monitor/frontendnpm installnpm run buildAfter building the panel, Monitor agent serves it when frontend/dist exists.
For development, run make monitor-dev from the repository root. It starts
the API on :3770 and the Vite dev server on :3000.
The monitor-release.yml workflow builds release artifacts and currently
runs only through workflow_dispatch. Monitor monitor-v* tags are separate
from App releases. For a Docker build, see monitor/Dockerfile.
Build hooks
Section titled “Build hooks”On every build, fl_build regenerates lib/data/res/build_data.dart, derives
the build number from Git history, and writes the version to the Xcode
configuration. Set the App name in the fl_build: section of pubspec.yaml.
Troubleshooting
Section titled “Troubleshooting”Clean build
Section titled “Clean build”flutter cleanflutter pub getdart run build_runner buildflutter clean removes build/, including the iOS Linux engine libraries
when that engine is enabled. Rebuild the required target with
scripts/build-ish-ios.sh device, simulator, or macos; otherwise linking
will fail because those engine files are missing.
Dependency version conflict
Section titled “Dependency version conflict”Check package compatibility before upgrading dependencies:
flutter pub upgradeAfter changing an annotated model, run code generation as well; see Code Generation.
Release checklist
Section titled “Release checklist”- Update the version in
pubspec.yaml. - Run code generation and localization generation.
- Run Dart, Flutter, and Rust tests.
- Build every target platform.
- Verify key features on real devices.
- Create the GitHub release.