diff --git a/README.md b/README.md
index 0adae29..b2be796 100644
--- a/README.md
+++ b/README.md
@@ -36,16 +36,33 @@ games to watch their prices.
## Download
-Pre-built release APKs live in [`apk/`](apk/). The app is unsigned-by-CI, so Android will ask you to
-allow installation from your file manager the first time.
+
+
+
+
+
+
+
+
+**Grab it from the [Releases page](https://github.com/JuggyBob/DiscountHunterAndroid/releases/latest)
+→ Assets.** That is the only place a phone can actually download it from — GitHub serves release
+assets as real downloads, whereas a binary committed to a repository is fetched through the repo's
+raw file path, which a phone browser will either refuse or save with the wrong name.
-- [`app-release.apk`](apk/release/app-release.apk) — the current release
+Every release contains:
-Or build it yourself:
+- **`discount-hunter-.apk`** — the optimised release build
+- **Source code (zip)** and **(tar.gz)** — generated by GitHub from the tagged commit
+
+The APK is unsigned, so Android asks you to allow installation from your file manager the first
+time. See [`apk/README.md`](apk/README.md) for the step-by-step.
+
+### Build it yourself
```bash
git clone https://github.com/JuggyBob/DiscountHunterAndroid.git
cd DiscountHunterAndroid
+echo "sdk.dir=/path/to/Android/sdk" > local.properties
./gradlew assembleRelease
```
diff --git a/apk/README.md b/apk/README.md
index a74b535..7e5905e 100644
--- a/apk/README.md
+++ b/apk/README.md
@@ -1,14 +1,33 @@
# Release APKs
-Pre-built APKs for Discount Hunter, so you can install and try the app without a build environment.
+## Where to get the app
-| File | Version | Notes |
-|------|---------|-------|
-| [`release/app-release.apk`](release/app-release.apk) | 1.0.0 | Optimised release build |
+**Download from the
+[Releases page](https://github.com/JuggyBob/DiscountHunterAndroid/releases/latest) → Assets**, not
+from this folder.
+
+Release assets are served to a phone as real downloads. A binary committed to a repository is not:
+GitHub fetches it through the repository's raw file path, so a phone browser tends to either refuse
+it or save it under the wrong name and extension. That is the whole reason this file exists — to
+point somewhere that works.
+
+Every release carries:
+
+| Asset | What it is |
+|-------|------------|
+| `discount-hunter-.apk` | The optimised release build |
+| Source code (zip) | Generated by GitHub from the tagged commit |
+| Source code (tar.gz) | Same, as a tarball |
+
+The APK is built by the `Release` workflow in CI, not uploaded by hand, so the file you download is
+the one the tests and lint ran against.
+
+The copy in this folder is a local build artefact kept for convenience. It is not what the README
+links to, and it will drift from the releases.
## Installing
-**These APKs are unsigned**, so Android will refuse them the first time. That is expected:
+**The APKs are unsigned**, so Android will refuse them the first time. That is expected:
1. Tap the downloaded `.apk` in your file manager.
2. Android will say the file is from an unknown source. Tap **Settings** → allow your file manager