Skip to content

roadstrapp.0.4.15.apk

Choose a tag to compare

@roadstrapp roadstrapp released this 08 Aug 21:54
· 13 commits to main since this release

Roadstr 0.4.15

No Google code left in the app. None.

Roadstr was built to run on phones with no Google services, and it did. But the APK still
carried Google Play Services code — fifteen classes it could never execute on the very
devices this app exists for. Nobody put them there on purpose: they arrived as a
dependency of the location plugin and stayed, because a shrinker cannot remove code that
is still reachable on paper.

They are gone. Verified on the release APK, not assumed:

com.google.android.gms.*        0 classes
com.google.android.play.*       0 classes
Google components in manifest   none

What was there, and why it survived so long

Roadstr has always read your position through Android's own LocationManager — every
single call site asks for it explicitly, which is what makes the app work on GrapheneOS,
/e/OS and LineageOS without Google apps. The Play Services code was never called.

It shipped anyway because geolocator decides at runtime whether to use Google's fused
provider or Android's own, so both remain reachable to the compiler. Excluding the library
at the build level simply broke the build: the Google client will not compile without it.

What changed

geolocator_android 5.0.3 (MIT) is now vendored in the repository with the proprietary
path removed — one file deleted, three lines changed, one dependency dropped. The Dart
API is untouched. third_party/geolocator_android/ROADSTR_FORK.md records exactly what
differs from upstream, so future versions stay easy to merge.

Also removed: Google Play Store split-install and deferred-delivery classes, which Flutter
links for apps that download parts of themselves from the Play Store. Roadstr does not.

What does not change

Nothing about how location works. Same provider, same accuracy, same behaviour on
de-Googled phones — there is simply nothing else left beside it now. Location permissions
are unchanged.

Staying that way

The Gradle build refuses com.google.android.gms and com.google.android.play outright,
so neither can return quietly through some future dependency. A test fails if the vendored
fork, the dependency override, or the exclusions are ever undone.

Verifying this release

sha256sum -c SHA256SUMS.txt

All four APKs are signed with the official Roadstr release key and carry versionCode 24.
Install the one matching your device (arm64-v8a for practically every phone made in the
last decade), or app-release.apk if you would rather not think about it.