fix: allow HTTP to local instances in release build; fix activity 404 in dev

Android release builds block cleartext HTTP by default (debug builds override
this via the debug manifest overlay). Add usesCleartextTraffic=true to app.json
so expo prebuild includes it in the generated manifest — required to reach local
Bincio instances over HTTP.

In bincio dev (Astro dev server), /activity/<id>/ routes 404 because
getStaticPaths() returns [] and there is no nginx try_files fallback. Add a Vite
middleware plugin to astro.config.mjs that rewrites /activity/<id>/ to /activity/
in dev, matching what nginx does in production.
This commit is contained in:
Davide Scaini
2026-04-25 09:30:02 +02:00
parent 69571c1306
commit d8b3a69564
3 changed files with 70 additions and 11 deletions
+54 -11
View File
@@ -247,21 +247,64 @@ Everything else — the activity files, the extracted BAS JSON — stays on devi
---
### Building a standalone APK
A standalone APK is a **self-contained application binary** that runs without Expo Go and doesn't rely on development servers. Use this to distribute to friends, devices, or the Karoo 2.
#### Option A: EAS cloud build (recommended, no local tools needed)
```bash
npm install -g eas-cli
eas build -p android --profile preview # produces a standalone APK
```
The APK is available for download from the EAS dashboard or via:
```bash
eas build -p android --profile preview --wait
eas artifact download # follow the prompt
```
#### Option B: Local build with prebuild (requires Android Studio)
```bash
cd mobile
npx expo prebuild --clean # generates Android native project
cd android
./gradlew assembleRelease # builds release APK
```
The APK is at `android/app/build/outputs/apk/release/app-release.apk`.
**Note:** Release APKs must be signed. If signing fails, use `assembleDebug` instead to produce `app-debug.apk` (same as `npx expo run:android`).
#### Troubleshooting
If your friend's APK won't start:
1. **Check device logs:**
```bash
adb logcat | grep -i react # requires Android SDK tools
```
2. **Ensure minimum Android version:** The app requires Android 5.0 (API 21) or higher.
3. **Verify the APK is actually installed:**
```bash
adb install /path/to/app.apk
```
---
### Distributing the app
| Target | Method |
|---|---|
| Your own Android phone | `npx expo run:android` via USB, or EAS development build |
| Karoo 2 | EAS production build → download APK → sideload via `adb install bincio.apk` or Karoo's app sideloader |
| Other Android users | EAS build → share APK download link (no Play Store needed) |
| Play Store | EAS production build → upload `.aab` to Play Console |
| iOS users | EAS build → TestFlight (beta) or App Store |
For Karoo sideloading:
```bash
eas build -p android --profile preview # produces a standalone APK
adb install /path/to/bincio.apk # with Karoo connected via USB
```
| Your own Android phone | `npx expo run:android` via USB, or `eas build --local` |
| Friends or testing | Standalone APK (release or debug, see above) — no Expo Go needed |
| Karoo 2 | `eas build -p android --profile preview` → sideload via `adb install` |
| Other Android users | Share the standalone APK download link |
| Play Store | `eas build -p android --profile preview` → upload `.aab` to Play Console |
| iOS users | `eas build -p ios --profile preview` → TestFlight (beta) or App Store |
---