Project_SylDa/appstore.md

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

  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 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:

  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