9.9 KiB
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
- ✅
LICENSEfile toevoegen in repo root (volledige GPL-3.0 tekst) - ✅ Source file headers toevoegen:
// SPDX-License-Identifier: GPL-3.0-or-laterin alle 6 Kotlin bestanden - ✅
README.mdlicentiesectie 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
- Ontwikkelaarsaccount aanmaken + ID verificatie
targetSdkupgraden naar 35 (codereview #7.2)- App icoon ontwerpen + mipmap resources toevoegen
- Release build configureren (signing, minify, proguard)
- Privacy Policy pagina maken (GitHub Pages of statische site)
- AAB build maken:
./gradlew bundleRelease - Closed testing opzetten met 12 testers
- 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 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
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
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) — 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:
- Clone repo, configureer
Settings.py(admin wachtwoord) ./prepare.shvoor Python venv + dependencies- nginx vhost + uWSGI config (meegeleverd in repo)
- Upload APK via admin paneel
- 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
- F-Droid — geen kosten, F-Droid bouwt zelf vanuit source, vertrouwd kanaal
- Samsung Galaxy Store — gratis, bereikt Samsung-gebruikers die geen F-Droid hebben
- Selfdroid (eigen store) — APK distributie voor iedereen buiten F-Droid/Samsung, geen goedkeuringsproces
- 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 |