205 lines
9.9 KiB
Markdown
205 lines
9.9 KiB
Markdown
# App Store Publicatie — Sylvia Touch Relay
|
|
|
|
## Licentie-overzicht Dependencies
|
|
|
|
| Dependency | Versie | Licentie | Copyleft? | FOSS? |
|
|
|---|---|---|---|---|
|
|
| `io.github.dkaukov:esp32-flash-lib` | 1.1.17 | **GPL-3.0** | Ja (strong) | Ja |
|
|
| `com.eclipsesource.minimal-json:minimal-json` | 0.9.5 | MIT | Nee | Ja |
|
|
| `org.slf4j:slf4j-nop` | 2.0.16 | MIT | Nee | Ja |
|
|
| `androidx.security:security-crypto` | 1.1.0-alpha06 | Apache 2.0 | Nee | Ja |
|
|
| `androidx.core:core-ktx` | 1.12.0 | Apache 2.0 | Nee | Ja |
|
|
| `androidx.appcompat:appcompat` | 1.6.1 | Apache 2.0 | Nee | Ja |
|
|
|
|
### GPL-3.0 Copyleft Implicatie
|
|
|
|
`esp32-flash-lib` is GPL-3.0. Een app die ertoe linkt (compile-time dependency) moet zelf ook GPL-3.0 (of compatibele licentie) zijn. Dit betekent:
|
|
|
|
- App **moet** onder GPL-3.0 worden uitgebracht
|
|
- Source code moet beschikbaar blijven (GitHub volstaat)
|
|
- Geen proprietary SDKs linken (niet van toepassing)
|
|
- Voor andere stores (Amazon, Samsung) is dit geen belemmering
|
|
|
|
### Actie: GPL-3.0 toepassen ✅ Voltooid
|
|
|
|
1. ✅ `LICENSE` file toevoegen in repo root (volledige GPL-3.0 tekst)
|
|
2. ✅ Source file headers toevoegen: `// SPDX-License-Identifier: GPL-3.0-or-later` in alle 6 Kotlin bestanden
|
|
3. ✅ `README.md` licentiesectie bijwerken
|
|
|
|
---
|
|
|
|
## Google Play Store
|
|
|
|
### Vereisten (2026)
|
|
|
|
| Vereiste | Status | Opmerking |
|
|
|---|---|---|
|
|
| Ontwikkelaarsaccount | ❌ Nog aanmaken | $25 eenmalig |
|
|
| Overheids-ID verificatie | ❌ Nog doen | Paspoort/rijbewijs + selfie |
|
|
| AAB formaat (geen APK) | ❌ Release build nodig | Nu alleen debug |
|
|
| Release signing key | ❌ Aanmaken | `keytool` of Play App Signing |
|
|
| targetSdk ≥ 35 | ❌ Nu 34 | Verplicht; ≥ 36 vanaf 31 aug 2026 |
|
|
| App icoon (mipmap) | ❌ Ontbreekt | Geen mipmap resources aanwezig |
|
|
| Privacy Policy URL | ❌ Nodig | Website of GitHub Pages |
|
|
| Data Safety formulier | ❌ Invullen | In Play Console |
|
|
| IARC content rating | ❌ Invullen | Vragenlijst in Play Console |
|
|
| App signing | ⚠️ Keuze | Play App Signing (aanbevolen) of eigen key |
|
|
| `minifyEnabled true` | ⚠️ Aanbevolen | Proguard/R8 rules ontbreken nog |
|
|
| `ACCESS_FINE_LOCATION` | ⚠️ Mogelijk overbodig | Sinds Android 12 niet meer nodig voor BLE scan |
|
|
|
|
### Closed Testing Verplichting
|
|
|
|
Nieuwe persoonlijke accounts moeten **closed testing** doorlopen:
|
|
|
|
- Minimaal **12 testers**
|
|
- Minimaal **14 opeenvolgende dagen** testen
|
|
- Testers moeten de app actief gebruiken
|
|
- Na goedkeuring: pas dan kan de app publiek
|
|
|
|
### Publicatie Stappenplan
|
|
|
|
1. Ontwikkelaarsaccount aanmaken + ID verificatie
|
|
2. `targetSdk` upgraden naar 35 (codereview #7.2)
|
|
3. App icoon ontwerpen + mipmap resources toevoegen
|
|
4. Release build configureren (signing, minify, proguard)
|
|
5. Privacy Policy pagina maken (GitHub Pages of statische site)
|
|
6. AAB build maken: `./gradlew bundleRelease`
|
|
7. Closed testing opzetten met 12 testers
|
|
8. Na 14 dagen: productie-release indienen
|
|
|
|
---
|
|
|
|
## Alternatieve App Stores
|
|
|
|
### Vergelijking
|
|
|
|
| Store | Kosten | Review tijd | GMS nodig? | FOSS verplicht? | Relevante beperking |
|
|
|---|---|---|---|---|---|
|
|
| **Samsung Galaxy Store** | Gratis | Weken | Nee | Nee | 16KB page size verplicht voor native libs |
|
|
| **Amazon Appstore** | $0 | ~1 dag | Nee | Nee | Laagste drempel, grote userbase (Fire TV/tablets) |
|
|
| **F-Droid** | $0 | 2-3 weken | Nee | **Ja** | Bouwt zelf vanuit source; hele codebase + deps moeten FOSS |
|
|
| **Huawei AppGallery** | Gratis | Dagen | Nee | Nee | ID verificatie verplicht |
|
|
| **Aptoide** | $0 | Uren | Nee | Nee | Minimale review, minder vertrouwd |
|
|
|
|
### F-Droid Specifiek
|
|
|
|
- **Compatibel**: alle deps zijn FOSS (GPL-3.0, MIT, Apache 2.0)
|
|
- **Vereist**: app moet open-source licentie hebben → GPL-3.0 (verplicht door esp32-flash-lib copyleft)
|
|
- **Proces**: F-Droid bouwt de app zelf vanuit source (geen APK/AAB upload)
|
|
- **Aanvraag**: merge request in [fdroiddata](https://gitlab.com/fdroid/fdroiddata) repo met build recipe
|
|
- **Voordelen**: geen ontwikkelaarskosten, geen account nodig, vertrouwd door FOSS-gemeenschap
|
|
- **Nadelen**: kleine userbase, geen automatische updates buiten F-Droid client
|
|
|
|
### Amazon Appstore Specifiek
|
|
|
|
- **Laagste drempel**: gratis, snelle review (~1 dag), geen ID verificatie
|
|
- **Bereik**: Fire TV, Fire tablets, Kindle — niche maar relevant voor IoT-apps
|
|
- **Formaat**: APK of AAB
|
|
- **Aanmelden**: [developer.amazon.com](https://developer.amazon.com)
|
|
|
|
### Samsung Galaxy Store Specifiek
|
|
|
|
- **Bereik**: alleen Samsung Galaxy toestellen (groot marktaandeel, maar exclusief)
|
|
- **Niet-Samsung**: Galaxy Store kan officieel alleen op Samsung toestellen; sideloading APK op andere merken werkt onbetrouwbaar (ROM-afhankelijkheden, craches, geen updates)
|
|
- **16KB page size**: als de app native libraries bevat, moeten deze met 16KB page alignment worden gebuild. Onze app heeft geen native libs, dus geen probleem.
|
|
- **Aanmelden**: [seller.samsungapps.com](https://seller.samsungapps.com)
|
|
|
|
### Aptoide
|
|
|
|
- **Niet zelf-hosted**: jouw store draait binnen Aptoide's infrastructuur, niet op eigen server
|
|
- **Gebruikers moeten eerst Aptoide client installeren** voordat ze jouw store kunnen vinden
|
|
- **Data breach**: 2020 — 20M gebruikersgegevens gelekt
|
|
- **Review**: minimaal (uren), maar minder vertrouwd bij gebruikers
|
|
- **Geschikt voor**: grote distributie, niet voor 1-2 apps → overkill voor ons
|
|
|
|
---
|
|
|
|
## Eigen App Store (Self-Hosted)
|
|
|
|
Technisch is een eigen app store simpel: APK hosten op een webserver, gebruiker downloadt direct. Android staat installatie uit onbekende bronnen toe. Er zijn geen Google-licenties of -toestemmingen nodig om een app store te runnen.
|
|
|
|
### Praktische Overwegingen
|
|
|
|
- Gebruiker moet "Installatie uit onbekende bronnen" inschakelen; Google Play Protect waarschuwt
|
|
- Geen automatische updates tenzij je zelf een update-check in de app bouwt
|
|
- **Android Developer Verificatie (vanaf 2027 globaal)**: Google vereist identity verification + package name registratie via Android Developer Console voor installatie op gecertificeerde apparaten. Dit geldt voor óók sideloading. De verificatie is gratis (geen $25 Play-account nodig), maar vereist legitimatiebewijs.
|
|
|
|
### Self-Hosted Oplossingen Vergelijking
|
|
|
|
| Aspect | Selfdroid | Aptoide | Simpele webpagina |
|
|
|---|---|---|---|
|
|
| **Zelf-hosted** | ✅ Ja | ❌ Nee (Aptoide's ecosysteem) | ✅ Ja |
|
|
| **Installatie voor gebruiker** | URL in browser → download APK | Eerst Aptoide client, dan store zoeken | URL → download APK |
|
|
| **Licentie** | BSD 3-clause | Propriëtair | NVT |
|
|
| **Setup** | Python/Flask + nginx + uWSGI | Account op aptoide.com | Statische HTML |
|
|
| **Admin paneel** | ✅ Met wachtwoordbeveiliging | Via Aptoide dashboard | Handmatig upload |
|
|
| **APK metadata extractie** | ✅ Automatisch (naam, versie, icoon) | ✅ Automatisch | Nee |
|
|
| **Android companion app** | Gepland, nooit gebouwd | ✅ Aptoide client | Nee |
|
|
| **Data breach history** | Nee | Ja (2020, 20M gebruikers) | Nee |
|
|
| **Geschikt voor 1 app** | ✅ Perfect | ❌ Overkill | ✅ Simpelst |
|
|
|
|
### Aanrader: Selfdroid
|
|
|
|
**Selfdroid** ([vitlabuda/selfdroid-web-app](https://github.com/vitlabuda/selfdroid-web-app)) — self-hosted Android app store, Python/Flask, BSD-licentie.
|
|
|
|
Voordelen:
|
|
- Admin uploadt APK, metadata automatisch geëxtraheerd
|
|
- Gebruikers openen URL op telefoon → downloaden APK direct vanuit browser
|
|
- Geen extra app installatie nodig voor gebruikers
|
|
- Lichtgewicht: Python 3.7+, Flask, nginx + uWSGI
|
|
- Kan op bestaande server draaien
|
|
- BSD-licentie compatibel met onze GPL-3.0 app
|
|
|
|
Deploy stappen:
|
|
1. Clone repo, configureer `Settings.py` (admin wachtwoord)
|
|
2. `./prepare.sh` voor Python venv + dependencies
|
|
3. nginx vhost + uWSGI config (meegeleverd in repo)
|
|
4. Upload APK via admin paneel
|
|
5. Deel URL met gebruikers
|
|
|
|
Alternatief voor maximale eenvoud: APK op GitHub Releases hosten + simpele downloadpagina (GitHub Pages). Geen server nodig, maar geen auto-metadata of admin paneel.
|
|
|
|
---
|
|
|
|
## Multi-Channel Distributiestrategie
|
|
|
|
We publiceren parallel via meerdere kanalen. Geen exclusiviteit — Android staat meerdere distributiekanalen naast elkaar toe.
|
|
|
|
| Kanaal | Bereik | Kosten | Beheer | Prioriteit |
|
|
|---|---|---|---|---|
|
|
| **F-Droid** | FOSS-gebruikers wereldwijd | Gratis | MR in fdroiddata, F-Droid bouwt zelf | 1e |
|
|
| **Samsung Galaxy Store** | Samsung-gebruikers | Gratis | Upload AAB, Samsung review | 2e |
|
|
| **Eigen store (Selfdroid)** | Iedereen met directe link | Hosting alleen | APK upload via admin paneel | 3e |
|
|
| **Google Play Store** | Grootste bereik | $25 + ID verificatie | Veel vereisten, closed testing | 4e |
|
|
|
|
### Volgorde
|
|
|
|
1. **F-Droid** — geen kosten, F-Droid bouwt zelf vanuit source, vertrouwd kanaal
|
|
2. **Samsung Galaxy Store** — gratis, bereikt Samsung-gebruikers die geen F-Droid hebben
|
|
3. **Selfdroid (eigen store)** — APK distributie voor iedereen buiten F-Droid/Samsung, geen goedkeuringsproces
|
|
4. **Google Play Store** — grootste bereik maar veel vereisten (account, closed testing, targetSdk 35)
|
|
|
|
### Benodigde stappen vóór publicatie (alle kanalen)
|
|
|
|
| Stap | F-Droid | Galaxy Store | Eigen store | Google Play |
|
|
|---|---|---|---|---|
|
|
| GPL-3.0 licentie | ✅ Gedaan | — | — | — |
|
|
| Release build (signed) | F-Droid bouwt zelf | ✅ Nodig | ✅ Nodig | ✅ Nodig (AAB) |
|
|
| App icoon (mipmap) | ✅ Nodig | ✅ Nodig | — | ✅ Nodig |
|
|
| targetSdk ≥ 35 | — | — | — | ✅ Verplicht |
|
|
| Privacy Policy URL | — | — | — | ✅ Verplicht |
|
|
| Developer verificatie | — | — | 2027 | ✅ Automatisch |
|
|
| Proguard rules | Aanbevolen | Aanbevolen | — | Aanbevolen |
|
|
|
|
---
|
|
|
|
## Openstaande Codereview Punten die Publicatie Blokkeren
|
|
|
|
| # | Prioriteit | Bevinding | Relevantie voor publicatie |
|
|
|---|---|---|---|
|
|
| 7.2 | LAAG | compileSdk/targetSdk → 35 | **Blokkeert Google Play** |
|
|
| 4.5 | LAAG | Proguard rules | **Aanbevolen** voor release build |
|
|
| 6.2 | LAAG | Dark mode | Gebruikerservaring |
|
|
| — | — | App icoon (mipmap) | **Verplicht** voor alle stores |
|
|
| — | — | Release build signing | **Verplicht** voor alle stores |
|
|
| — | — | Privacy Policy URL | **Verplicht** voor Google Play |
|