Releases: jbinder/sprawlrun
Release list
SPRAWL//RUN 0.2.2
A gamified cyberpunk running tracker. Ten GPS-tracked story missions that cut
into your music, with pursuits scaled to your own pace. Completely offline.
This release rolls up everything since 0.1.0 — the 0.2.0 and 0.2.1 work never
got a GitHub release of its own.
Install
Download the APK for your phone and open it. Android will ask you to allow
installing from this source — that's expected for anything outside an app store.
| File | For |
|---|---|
sprawlrun-0.2.2-arm64-v8a.apk |
Almost every phone made since ~2017. If unsure, take this one. |
sprawlrun-0.2.2-armeabi-v7a.apk |
Old 32-bit devices |
sprawlrun-0.2.2-x86_64.apk |
Emulators and x86 tablets |
Installing the wrong one simply fails with "App not installed" — nothing is
harmed, try the next.
Requires Android 7.0 (API 24) or newer. Grant location when the first mission
starts; missions with a time target work without it, distance targets don't.
Android 13+ will also ask to allow notifications — that's for the ongoing
"mission active" notice, and it's the only notification the app ever shows.
Updating from 0.1.0 keeps your runs. All releases are signed with the same
key, so Android upgrades in place.
Verify what you downloaded
Signer SHA-256 c8dc34a3809b267e45e3193ad5a5206b35582354a8dde536629b0f344aae0ed6
Signer DN CN=SPRAWL//RUN, O=SPRAWL//RUN, C=AT
arm64-v8a SHA-256 6fadf3410439285f2ee26b0cdae5efe7a15dddcbc379f9c9e00872bb3c73f77c
armeabi-v7a SHA-256 68790dabf5afba31daa982dce26c54b6bb41155cccd957c668d9d0e22e4d35d8
x86_64 SHA-256 b6ea6b08b2ad4e045154a23056a201b8482e122d96c546a49334349870baed76
sha256sum sprawlrun-0.2.2-arm64-v8a.apk
apksigner verify --print-certs sprawlrun-0.2.2-arm64-v8a.apkThe signer fingerprint is the one worth remembering — it is unchanged since
0.1.0 and stays constant across future releases; Android will refuse any update
that doesn't match it. The APK hashes change with every build.
What's new since 0.1.0
Backup and restore. Settings → Data exports everything the app knows —
profile, campaign progress, achievements, codex and every run with its GPS
trace — as one plain JSON file, handed to the share sheet. Import it back to
replace a device outright, or merge it into what's already there. Merging only
ever adds, so an old backup can't relock a mission. No storage permission in
either direction.
Your music comes back. Two fixes. A sound effect outside a story beat used to
take audio focus and never hand it back, so a pursuit could leave your music
paused for its whole duration. And several popular players only resume after
short interruptions — after a long transmission they stay silent. The app now
watches for that and presses play on your behalf. Switchable off under Audio.
The "mission active" notification actually appears. It never did in earlier
versions: Android treated the channel as blocked, and the app never asked for
permission to post. Both fixed. It now shows the remaining time or distance,
counting down, and tapping it returns you to the mission.
Runs without GPS survive your pocket. A mission started with location off or
refused had nothing keeping it alive, so Android could freeze it with the screen
off and the story would stop while the clock kept counting. Those runs now hold
their own foreground service and show the same notification.
Data safety under the hood. Every save is written atomically — to a sibling
file, then renamed — so a crash mid-write can no longer leave a torn file that
reads back as empty. Upgrades from 0.1.0 are covered by frozen-fixture tests.
Privacy
There is no INTERNET permission in the manifest. The app cannot reach the
network. No accounts, no analytics, no ads.
One honest caveat: Android's own backup service can copy app data to your Google
account if you have device backup switched on, the same as for most apps. That's
the operating system, not this app — the app leaves android:allowBackup at the
platform default and says so rather than claiming more isolation than it has.
No Google Play Services. play-services-location is excluded from the build
and location uses the AOSP LocationManager directly — verified: zero classes
under com/google in each shipped binary. Runs identically on de-Googled ROMs
such as /e/OS, GrapheneOS and LineageOS.
Permissions: location (route tracking), foreground service (keeps tracking alive
with the screen off — location type when you've granted location, specialUse
when you haven't), wake lock, notifications (the ongoing "mission active" notice).
Known limitations
- On a de-Googled ROM you may hear nothing. Spoken dialogue needs a
text-to-speech engine installed, and many de-Googled builds ship none. The app
falls back to on-screen text at speaking pace, with all sound effects intact.
Installing RHVoice or eSpeak NG restores the voices. - First GPS fix can be slow. No Play Services means no fused provider
bootstrapping a position from cell and sensor data. Once locked, tracking is
unaffected. - No maps. Map tiles would need a network connection. Routes are drawn from
the recorded trace instead.
Also on F-Droid, soon
A submission to the main F-Droid repository is under review
(fdroiddata !45198).
Note that F-Droid builds and signs apps with its own key, so an install from
F-Droid and one from here can't update each other — pick one source and stay on
it, or export a backup first.
Build it yourself
Everything is reproducible from source. The sound effects, the launcher icons, the
status-bar icon and even the screenshots in the README are generated by scripts in
tool/ rather than committed as opaque binaries. See the README for the build
steps.
MIT licensed.
SPRAWL//RUN 0.1.0
A gamified cyberpunk running tracker. Ten GPS-tracked story missions that cut
into your music, with pursuits scaled to your own pace. Completely offline.
First public release.
Install
Download sprawlrun-0.1.0.apk below and open it on your phone. Android will ask
you to allow installing from this source — that's expected for anything outside
an app store.
Requires Android 7.0 (API 24) or newer. Grant location when the first mission
starts; missions with a time target work without it, distance targets don't.
Verify what you downloaded
APK SHA-256 b1d4444419235da0687bc37f2f4fa397903351aac758c442fbc4e5f58ebf5650
Signer SHA-256 c8dc34a3809b267e45e3193ad5a5206b35582354a8dde536629b0f344aae0ed6
Signer DN CN=SPRAWL//RUN, O=SPRAWL//RUN, C=AT
sha256sum sprawlrun-0.1.0.apk
apksigner verify --print-certs sprawlrun-0.1.0.apkThe signer fingerprint is the one worth remembering — it stays constant across
future releases, and Android will refuse any update that doesn't match it. The APK
hash changes with every build.
What's in it
- Ten story missions — 100 story beats, 266 lines of dialogue, 20 codex
entries. A courier job on the Ninsei strip that ends forty floors up a
corporate arcology. - Interludes that interrupt your music. Bring your own audio; the app takes
focus, your handler talks, then hands it back. Pause or duck, your choice. - Five characters, five voices, synthesised on-device with distinct pitch and
pacing so you know who's speaking with the phone in your pocket. - Pursuits scaled to you. Escaping means beating your own pace from the last
three minutes — a real effort at 4:00/km or 7:00/km, impossible at neither.
Switchable off. - You set the target before each mission: a time or a distance. The story
paces itself to fit. Overshoot freely; it all counts. - Stats for the last week and month — distance, time, calories, cleared
missions — plus lifetime totals and per-run GPS traces. - 46 achievements and a weekly streak you define in minutes, kilometres or
missions.
Privacy
There is no INTERNET permission in the manifest. The app cannot reach the
network, so nothing about your runs can leave the device. No accounts, no
analytics, no ads.
No Google Play Services. play-services-location is excluded from the build
and location uses the AOSP LocationManager directly — verified: zero classes
under com/google in the shipped binary. Runs identically on de-Googled ROMs
such as /e/OS, GrapheneOS and LineageOS.
Permissions requested: location (route tracking), foreground service (keeps
tracking alive with the screen off), wake lock, notifications (the ongoing
"mission active" notice).
Known limitations
- On a de-Googled ROM you may hear nothing. Spoken dialogue needs a
text-to-speech engine installed, and many de-Googled builds ship none. The app
detects this and falls back to on-screen text at speaking pace, with all sound
effects intact. Installing RHVoice or eSpeak NG restores the voices. - First GPS fix can be slow. Dropping Play Services means no fused provider
blending cell and sensor data to bootstrap a position. Once locked, tracking is
unaffected. - No maps. Map tiles would require a network connection. Routes are drawn from
the recorded trace instead. - This is a 0.1.0. The audio-focus behaviour in particular — your music
pausing and resuming cleanly around each interlude — varies between Android
versions and music apps. If it misbehaves with your setup, please open an issue
and say which player and Android version.
Build it yourself
Everything is reproducible from source. The sound effects, the launcher icons and
even the screenshots in the README are generated by scripts in tool/ rather than
committed as opaque binaries. See the README for the build steps.
MIT licensed.

