Android · installed from a file, not a store

The app that makes the evidence.

Everything else in Warrant reads records. This is the surface that writes them — the camera, the on-device redaction, the Bluetooth instrument read, the gate that will not let a step past without the proof it asked for. It is a real Android app, and until it is on Play you install it the way you install any APK.


The latest build

There is no published build yet.

Nothing is attached to a release on mattrickslauer/warrant that a phone could install. The source builds — the two commands are below — and this page will show the file the moment a release carries one, with no redeploy.


Installing it

Open this page on the phone and tap the button. Everything below happens once, and only for this browser.

  1. The download lands in Downloads. Tap the notification, or open the file from the Files app.
  2. Android will say the browser is not allowed to install unknown apps. That prompt is expected — it appears for every app not fetched from a store. Tap Settings, turn on Allow from this source, and come back.
  3. Play Protect will offer to scan the file. Let it. It has never seen this app before, so it may still warn you afterwards; Install anyway is the button that continues.
  4. On first run the app asks for the camera, and for nearby-devices if you are pairing an instrument. Both are refusable — a step that needs one says so rather than failing quietly.
Turn the permission back off afterwards.

Settings → Apps → Special access → Install unknown apps. Leaving a browser able to install anything it downloads is a worse posture than the one you started with, and this app does not need it again.


Checking the file is the file

A checksum appears here when the release carries one. Until then, the honest check is the one below: build it yourself and install what you built.

The build is unsigned by any authority you have reason to trust — there is no Play signature behind it and no notarisation. Install it because you read the source, or because you built it. That is the whole of the trust story, and this page is not going to dress it up.


What it needs

Android versionAndroid 8.0 (Oreo, API 26)

Below that it will not install at all — the platform refuses before the app runs.

Camera

Evidence capture and the on-device face redaction. Refusable; steps that need a photograph say so.

Bluetooth and nearby devices

Only to pair an instrument. Without it the app still runs — a value you type is asserted rather than measured, and the record says which.

Network

For the agents. Capture works offline; the verdicts do not.


What is real and what is scripted

The app says this on screen too. A demo that looks like production is how somebody gets misled, so the fixture banner at the top of a job is not decoration.

RealCamera capture, on-device face redaction, BLE scan / connect / GATT read, driver decoding, the tier refusal, the Seal and the Gate
ScriptedAgent verdicts, their rationales and their costs — played from data/Fixtures.kt on a clock
Not builtGoogle sign-in, the network layer, Play Integrity attestation, plate redaction, speech-to-text on spoken reasons

Building it yourself instead

Two commands, JDK 17 and an Android SDK with platform 35. local.properties points at the SDK and is not committed.

git clone https://github.com/mattrickslauer/warrant.git
cd warrant/android
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk

The debug build installs alongside a downloaded one — its application id carries a .debug suffix — so you can hold both and compare them.