Building a safer offline Android screen recorder in PureHub beta.33
Screen recording looks simple from the UI, but Android apps must manage user consent, encoder dimensions, long-running service state, and incomplete MediaStore files correctly. PureHub beta.33 focuses on those details while keeping the app offline and ad-free.
What changed
- Mini-app headers now show the correct tool name instead of a blank title.
- Screen Recorder now offers a quick path and an optional Pro mode.
- Pro presets cover efficient 720p/30 fps, balanced 1080p/30 fps, and smooth 720p/60 fps recording.
- Recording state survives UI recomposition and navigation.
- Pause, resume, and stop actions are available from both the app and notification.
- Virtual displays and file descriptors are released reliably.
- Failed or too-short captures no longer leave unusable pending media behind.
Privacy and verification
PureHub records to local storage after Android's system consent prompt. The release APK requests no INTERNET permission. For beta.33, both Android variants passed unit tests, lint, release builds, dependency checks, and the offline permission gate. I also verified the published ARM64 checksum and signing certificate before installing it on a physical Android device.
Try it
Download PureHub beta.33 and inspect the source. Feedback about recording quality, device compatibility, and the new preset flow is especially useful.
PureHub is free, open source, and has no ads or trackers. Development and release QA used AI-assisted tooling under maintainer review.
Top comments (2)
The no-INTERNET-permission line is the part of this I'd build on, because it's the one claim a reader can check without trusting you. Two things that make it hold up.
A dependency can put INTERNET back through manifest merge without you ever touching your own manifest, so the artifact that matters is the merged manifest in the release build, not the source one. Reading the output of processReleaseManifest, or aapt dump permissions on the signed APK, catches a transitive add that a grep of app/src won't.
On pending media: a failed or too-short capture is one way to strand an IS_PENDING row, but process death mid-recording is the other, and it never runs your cleanup path at all. A sweep at startup over the pending entries your own app owns covers both cases without needing to know why the last one died.
Does the offline permission gate assert against the merged manifest or the source manifest?
Yes - the offline gate runs
aapt dump permissionsagainst every final signed release APK, so it checks the merged artifact rather than only the source manifest.You were also right about hard process death: normal service cleanup cannot be relied on after the process is killed. PureHub beta.34 now performs process-start recovery that only removes abandoned
IS_PENDINGvideo rows owned by the PureHub package and matching itsMovies/PureHubrecording path and filename pattern.Thanks for the careful review and for catching that gap.