Skip to content

system dependencies

this document lists the runtime and build-time system libraries the app depends on per platform. keep it in sync with the packaging manifests and the CI builder image.

Linux

these are required for the app to run after installation. package names may vary by distribution; the Debian / Ubuntu name is listed first.

  • libayatana-appindicator3-1 (or libappindicator3-1 on older distros) — required by cnativeapi for the system tray icon.
  • libgtk-3-0 — GTK 3 runtime used by the native window and menu code.
  • libx11-6 and libxi6 — X11 and XInput libraries used by the native windowing layer.
  • libasound2 — ALSA. flutter_soloud links the bundled SoLoud engine, which opens the sound device through ALSA/PulseAudio. without it the engine fails to initialize and the app runs without audio (bells, soundscapes, TTS).
  • libsecret-1-0 — needed if any secure storage APIs are used.
  • standard GLibc / pthread runtime.

these names map to gtk3 / alsa-lib / libsecret on RPM and pacman systems; the deb also pulls libblkid1 and liblzma5 for Flutter's bundled shared libraries.

sandboxed packaging:

  • Flatpak — finish-args includes --socket=pulseaudio in addition to the wayland/x11 sockets, so the confined app can reach the sound server.
  • Snap — the audio-playback plug plus libasound2 in stage-packages; password-manager-service covers libsecret-backed credential storage (WebDAV password).

build-time Linux dependencies (used when compiling the app from source):

  • build-essential
  • clang
  • cmake >= 3.10
  • pkg-config
  • libgtk-3-dev
  • libx11-dev
  • libxi-dev
  • libayatana-appindicator3-dev (or libappindicator3-dev)
  • libsecret-1-dev
  • ninja-build

Android

  • android.permission.INTERNET and android.permission.ACCESS_NETWORK_STATE are declared in AndroidManifest.xml and are required for WebDAV backup and sync.
  • android.permission.USE_EXACT_ALARM or SCHEDULE_EXACT_ALARM depending on target SDK.
  • flutter_local_notifications handles the exact-alarm request on Android 12+.

iOS / macOS

  • no extra runtime libraries beyond the Flutter toolchain and iOS/macOS system frameworks.
  • HealthKit (iOS only). writing sessions to Apple Health needs all of:
  • the HealthKit capability on the Runner target, declared by ios/Runner/Runner.entitlements (com.apple.developer.healthkit) and wired through CODE_SIGN_ENTITLEMENTS in Runner.xcodeproj;
  • NSHealthUpdateUsageDescription in ios/Runner/Info.plist. the app writes only, so NSHealthShareUsageDescription is deliberately absent — add it alongside a read request if a feature ever reads back from the store, or HealthKit will terminate the app;
  • an iOS 14.0 deployment target, required by the health plugin. this is set in both ios/Podfile and IPHONEOS_DEPLOYMENT_TARGET; the two must stay in sync.
  • a paid Apple Developer account to provision the entitlement. HealthKit does not run on a free personal team.
  • HealthKit does not exist on macOS. healthServiceProvider routes macOS to the health package, whose isSupported() reports false there, so health sync is inert rather than broken.

Windows

  • no extra runtime libraries beyond what Flutter bundles.