Initial commit: Zabavna Matematika web and Android app.
Kids math practice (SL/EN) in a Vite React app, wrapped with Capacitor for Android (net.bit76.matematika). Includes session refactor, i18n, and text-free difficulty icons with translated overlays.
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# Android
|
||||
|
||||
Zabavna Matematika on the phone is the **same web game**, running in a Capacitor WebView. Phones and tablets share one APK. Layout is CSS (already tuned for ~390px and up), not a second codebase.
|
||||
|
||||
## What lives where
|
||||
|
||||
| Path | Role |
|
||||
|---|---|
|
||||
| `web/src/` | The game |
|
||||
| `web/dist/` | Vite production build (synced into Android) |
|
||||
| `web/capacitor.config.json` | App id `net.bit76.matematika`, `webDir: dist` |
|
||||
| `web/android/` | Gradle / Android Studio project (generated, then committed) |
|
||||
|
||||
Do not start a Kotlin/Compose game. Change play logic in `web/src/` only, then sync.
|
||||
|
||||
## First-time machine setup
|
||||
|
||||
1. Install [Android Studio](https://developer.android.com/studio).
|
||||
2. Install an SDK (API 24+ is enough for Capacitor 7) and a virtual device, or plug in a phone with USB debugging.
|
||||
3. Accept licenses if Studio asks.
|
||||
|
||||
## Commands
|
||||
|
||||
From the repo root or `web/`:
|
||||
|
||||
```bash
|
||||
cd web
|
||||
npm install
|
||||
npm run android
|
||||
```
|
||||
|
||||
That runs `vite build`, `cap sync android`, then `cap open android`. In Studio press Run.
|
||||
|
||||
After you change JS/CSS/assets:
|
||||
|
||||
```bash
|
||||
npm run cap:sync
|
||||
```
|
||||
|
||||
Then Run again in Android Studio. Skip a full `cap add android` unless the `android/` folder is missing.
|
||||
|
||||
If `android/` was never generated (clone of a repo that omitted it):
|
||||
|
||||
```bash
|
||||
cd web
|
||||
npm run build
|
||||
npx cap add android
|
||||
npx cap sync
|
||||
```
|
||||
|
||||
## App identity
|
||||
|
||||
Set in `web/capacitor.config.json`:
|
||||
|
||||
- **Application id:** `net.bit76.matematika` (Play Console package name)
|
||||
- **Display name:** Zabavna Matematika
|
||||
|
||||
Change these before the first Play Store listing. Renaming later is painful.
|
||||
|
||||
## Icons and splash
|
||||
|
||||
Replace the Capacitor placeholders in:
|
||||
|
||||
- `web/android/app/src/main/res/mipmap-*/`
|
||||
- `web/android/app/src/main/res/drawable*/`
|
||||
|
||||
Keep one icon set. Tablet vs phone is the same WebView.
|
||||
|
||||
## Store notes
|
||||
|
||||
- Privacy policy: `web/public/privacy.html` (also served on the web host).
|
||||
- Orientation: portrait is already declared in the PWA manifest; you can match that in `AndroidManifest.xml` if you want to lock it.
|
||||
- Offline: the existing service worker still helps inside the WebView; Capacitor also ships the `dist/` files on device, so the game works without a network after install.
|
||||
|
||||
## What not to do
|
||||
|
||||
- Do not add `apps/android` with a rewritten UI.
|
||||
- Do not copy `questionGenerator.js` into Java/Kotlin.
|
||||
- Do not treat tablets as a separate flavor unless you later need a different Play listing.
|
||||
Reference in New Issue
Block a user