Universal APK · all-abi
Includes arm64-v8a + armeabi-v7a + x86_64; works on old phones, modern phones and emulators.
sha256 14a5757b9c4d0a427490738868647bc112771a606d54462c6a142cf578a97d6e
Download & Install
Android and Linux local builds are available now. Windows / macOS packages are produced by CI on demand; iOS uses backup import and has no standalone installer. Verify SHA-256 before installing.
v1.0.3 · 2026-10-16
These files are from the local v1.0.3 build. Android packages are signed with a debug certificate and are suitable for local use; public distribution requires official signing. The AAB is store material.
Includes arm64-v8a + armeabi-v7a + x86_64; works on old phones, modern phones and emulators.
sha256 14a5757b9c4d0a427490738868647bc112771a606d54462c6a142cf578a97d6e
Contains only lib/arm64-v8a, so it is smaller. Fits most modern Android phones.
sha256 8da051203129cc50e651fcc326f2c4be356f3c3ae4fc32477b02cf236f001a1b
Three-ABI store package for app-store distribution. Regular users should download an APK above.
sha256 d6bf8a44d0b695e435e0490f5b9cac697b7caaeb81cd73fac72e657ae3905b57
GUI (/opt/ssd) + daemon / writer / cli + polkit + udev + menu entry and icon. Install once, get the desktop app.
sha256 6f4c360f1b5f7046a9fc58bf4264947e05b143c1f96da37f14f05c6194454a54
Not included in this release: the standalone x86_64 APK and the Linux portable tar.gz. Build them from source if needed. Windows / macOS packages are produced by CI on demand and are not in the download section.
Integrity
The download directory includes SHA256SUMS (download the checksum file). If verification fails, do not install; download again.
cd ~/Downloads
sha256sum -c SHA256SUMS
# Every file should print: OK
# Or check a single file
sha256sum ssd-1.0.3-all-abi.apk
# 14a5757b9c4d0a427490738868647bc112771a606d54462c6a142cf578a97d6e
Signing: the Linux release bundle also provides an SSHSIG signature for SHA256SUMS. Verify with:
ssh-keygen -Y verify -f allowed_signers \
-I erik@erik.xyz -n erik-xyz-provenance \
-s SHA256SUMS.sig < SHA256SUMS
Expected: Good "erik-xyz-provenance" signature. apt / dpkg do not verify per-package signatures by default; this package is not individually signed.
Android
xyz.erik.ssd, targetSdk 36; only the framework-injected receiver permission, zero INTERNET.# Or install with adb
adb install -r ssd-1.0.3-all-abi.apk
Linux
Since v1.0.3 the deb contains both the desktop app and the engine. After installation, search for “ssd” in the app menu.
sudo dpkg -i ssd_1.0.3_amd64.deb
# If dependencies are missing:
sudo apt -f install
Payload: /opt/ssd (GUI), /usr/libexec/ssd (daemon / writer / cli), polkit, udev, menu entry and icon.
sudo dpkg -r ssd
Trial ledger, license and preferences live in the user directory and survive uninstall / upgrade. Upgrades can be installed over the old version.
If the menu entry does not appear immediately, log out and back in, or run update-desktop-database. The deepin launcher searches by app name, so search “ssd”.
Build from source
Rust stable (edition 2024, ≥ 1.97) + Flutter 3.47.5 stable (pinned in CI; other versions are not verified).
cargo build -p xd-daemon
bash scripts/build-deb.sh
# Or run the UI directly:
cd ui && flutter run -d linux
cd ui
flutter build apk --release \
--dart-define=SSD_VERSION=1.0.3
flutter build appbundle --release \
--dart-define=SSD_VERSION=1.0.3
# CI: Actions → CI → Run workflow
# Check packaging=true
# Artifacts:
# ssd-v1.0.3-windows-x64.zip
# ssd-v1.0.3-macos-arm64.zip
# ssd-v1.0.3-macos-x64.zip
Unsigned packages: on Windows choose “More info → Run anyway”; on macOS 15+ use System Settings → Privacy & Security → Open Anyway.
cargo test --workspace
bash scripts/e2e.sh
cd ui && flutter test
See the repository README for the full test and e2e guide; unverified real-device paths follow the release notes.
Troubleshooting
Uninstall an older build with the same package name first, or check that the source is allowed. The package has been xyz.erik.ssd since v0.7.0.
The deepin launcher searches by app name (Name=ssd). Search “ssd”. If it still does not appear, log out and back in.
That is Gatekeeper for an unsigned build. Use System Settings → Privacy & Security → Open Anyway, or run xattr -dr com.apple.quarantine <app>.
The current package is unsigned. Choose “More info → Run anyway”. Signing / notarization credentials are not configured yet.
The desktop app resolves the engine in this order: explicit argument → XD_DAEMON_BIN → same directory → /usr/libexec/ssd/xd-daemon. A user-level zip needs a daemon next to the app.
The desktop trial needs a first-run network time anchor. Before anchoring, trial export is unavailable. After anchoring: 7 days ∧ 3 export sessions ∧ 20 files / 1 GiB.