👉 Et sinon, direct en ligne : gsm.COTE7.com
Le dossier .devcontainer/ reste dédié à Codespaces/devcontainer.
Pour lancer l'app localement avec Docker Compose :
docker compose up -d --buildLe mode auto-reload est actif en local Docker (watchfiles sur src/).
Quand tu modifies une vue Python, le process redémarre automatiquement.
Si le navigateur ne se reconnecte pas tout de suite, fais un refresh de la page.
Puis ouvrir :
http://localhost:8000
Suivre les logs :
docker compose logs -fArrêter :
docker compose downVérifier l'état global du service :
docker compose psLire le statut de santé exact du conteneur :
docker inspect gsm_app --format "health={{.State.Health.Status}}"Voir le détail des derniers checks (code retour, message, date) :
docker inspect gsm_app --format "{{json .State.Health}}"Pour contribuer au dev de ce projet (Et en connaître tous les rouages et secrets) :
Dans le page du dépôt (Original, ou de votre fork), appuyer sur ' , ' et générer un codespace.
Et dans le terminal qui apparaît enfin :
./goNB : Dans un codespace, seule la version Flet Web fonctionne (Avec l'option --web), et attention, pas de refresh, hotreload, etc... Bref, ne sert qu'à partager un rendu, voire éditer du code, ou éventuellement coder / modifier un script très simple...
Éxécuter :
./goLancer le build APK pour construire l'app pour ton mobile ou tablette Androïd :
./apk(Sinon, ouvre cette page avec ton appareil mobile et télech directement : https://github.com/GrCOTE7/gsm/releases - La der version, le lien Upu.apk)
Depuis la racine :
Exemple: \scripts\Nom_Thomas.py
uv --version
# Si échoue (Et sûr qu'uv est installé) :
$env:Path = "C:\Users\utilisateur\.local\bin;$env:Path"
uv run flet run scripts/Nom_Thomas.py
# OU (Si votre script est dans l'app ( src/ ) et python s'appelle py) :
uvx watchfiles "flet run quick_test.py" . 2>nul
# OU sans flet, simple script
uvx watchfiles "py quick_test.py" . 2>nul
Juste on démarre un CodeSpace (Sur la page GH de ton fork : ' , ' (Virgule) + Create new codespace + F9
Et dans la CLI (Console - Terminal) qui apparaît :
uvx watchfiles "python quick_test.py" . 2>nulNB: CTRL + C dans la CLI pour arrêter le process
Si uv bug :
# Vérifier si uv est disponible
uv --version
# Si uv n'est pas trouvé :
curl -LsSf https://astral.sh/uv/install.sh | sh
# Ajouter uv au PATH pour la session courante
export PATH="$HOME/.local/bin:$PATH"Outil ultra‑rapide et minimaliste pour installer, exécuter et gérer des environnements.
Run as a desktop app:
uv run flet runRun as a web app:
Option 2 — Application Flet sur le téléphone (rendu natif identique à l'APK) ★ ( Installez l'application Flet depuis le Play Store. Puis lancez en local )
uv run flet run --web -r
OU MIEUX si App flet installée dans Phone :
uv run flet run src/main.py --androidAvantages: rendu 100% fidèle à l'APK, hot reload, aucun build Limite: l'app Flet doit être installée une fois sur le téléphone
Option -r => Phone: http://:8550 (Voir avec ipconfig → Carte réseau sans fil Wi-Fi : IPv4)
uv run flet run --web --host 0.0.0.0 --port 8550 -r
# ipconfig → IPv4 :
uv run flet run --web --host 172.21.0.1 --port 8550 -rConstruire apk
uv run flet build apk -vC:\gsm\build\flutter\android\app\build.gradle.kts
→ Vérifier val resolvedMinSdk = 24
et ajouter en fin de fichier :
// Work around AGP/Kotlin lint crashes in some Flutter plugins during release APK builds. subprojects { tasks.matching { it.name == "lintVitalAnalyzeRelease" || it.name == "lintAnalyzeRelease" || it.name == "lintRelease" }.configureEach { enabled = false } }
Avant :
tasks.register("clean") { delete(rootProject.layout.buildDirectory) }
- Pour les updates, dans le workflow, procédure exacte pour signer le fichier APK généré → GgleStore de toujours la même signature
Pour savoir quel Py est utilisé par uv
uv run python -c "import sys; print(sys.executable)"For more details on running the app, refer to the Getting Started Guide.
uv run flet build apk -vFor more details on building and signing .apk or .aab, refer to the Android Packaging Guide.
uv run flet build ipa -vFor more details on building and signing .ipa, refer to the iOS Packaging Guide.
uv run flet build macos -vFor more details on building macOS package, refer to the macOS Packaging Guide.
uv run flet build linux -vFor more details on building Linux package, refer to the Linux Packaging Guide.
flet build windows -vEfface les builds précédents
uv run rm -r c:\gsm\src\build\flutter\build -Force -ErrorAction SilentlyContinue
rm -r $env:LOCALAPPDATA\Temp\serious_python_* -Force -ErrorAction SilentlyContinueflet build windows -vFor more details on building Windows package, refer to the Windows Packaging Guide.
c:\gsm/
├── src/ ← Application active (refactorisée)
├── build/ ← Artefacts de build
├── .git/ ← Version control
├── .venv/ ← Environnement Python
├── .vscode/ ← Config VS Code
├── pyproject.toml ← Dépendances (uv)
├── README.md
├── apk.ps1 ← Build APK
└── go.ps1 ← LanceurPour les mises à jour :
- Process du déclenchement des updates : → Mise à jour à partir des push/main → GH - releases
Semantic versioning (semantic-release): major.minor.patch
-
upgrade: description→ major ✔ -
feat: desc→ minor ✔ -
fix: descouperf: desc→ patch ✔ -
besoin d'utiliser toujours la même clé de signature (keystore) entre les <> versions.
-
1 Générer le keystore une seule fois (à faire localement, une seule fois) :
& "C:\Program Files\Java\jdk-21\bin\keytool.exe" -genkeypair -v -keystore upu-release.keystore -alias upu-key -keyalg RSA -keysize 2048 -validity 10000
ou
keytool -genkey -v -keystore upu-release.keystore \ -alias upu-key -keyalg RSA -keysize 2048 -validity 10000ou
keytool -genkeypair -v \
-keystore upu-release.keystore \
-alias upu \
-keyalg RSA -keysize 2048 -validity 10000- 2 Encoder en base64 :
base64 -w 0 upu-release.keystore[Convert]::ToBase64String([IO.File]::ReadAllBytes("upu-release.keystore"))Chemin complet car _ laisse croire à un scope
[Convert]::ToBase64String([IO.File]::ReadAllBytes("D:\_gc\aGC7\Teck\upu-release.keystore")) > D:\_gc\aGC7\Teck\keystore.b64.txtPS D:\_gc\aGC7\Teck> Get-ChildItem -Path D:\_gc -Filter upu-release.keystore -Recurse
Directory: D:\_gc\aGC7\Teck
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 13/05/2026 16:27 2730 upu-release.keystore
PS D:\_gc\aGC7\Teck> - 3 Ajouter les 4 secrets dans Settings → Secrets and variables → Actions du repo
Secret Valeur ANDROID_KEYSTORE_B64 le base64 du .keystore ANDROID_STORE_PASSWORD mot de passe du keystore ANDROID_KEY_ALIAS ex. upu-key ANDROID_KEY_PASSWORD mot de passe de la clé (Svt mme que STORE_PW)
- Vérif la signature
C:\Users\utilisateur\AppData\Local\Android\Sdk\build-tools\34.0.0\apksigner.bat verify --print-certs UpU.apk
uv run python -c "import flet; print(flet.__version__)".\adb logcat | Select-String "com.mycompany.upu"
.\adb logcat | Select-String "python" | Select-String "com.mycompany.upu"
| Action | Rebuild APK ? |
|---|---|
| Modifier du Python | ❌ Non |
| Modifier du Flet | ❌ Non |
| Modifier la logique d’update | ❌ Non |
| Modifier comment tu télécharges l’APK | ❌ Non |
| Modifier comment tu lances l’installation | ❌ Non |
| Ajouter un appel Android natif | ✔️ Oui |
| Modifier le manifest Android | ✔️ Oui |
| Ajouter un service Android | ✔️ Oui |
| Modifier le template Android de Flet | ✔️ Oui |
- [-] Finir docs de base (✅ Git, ✅ VSC, Py) + Add autres docs initiatiques
- Mettre en place dans le WorkFlow, le build pour IPhone (→ $Thera...)
- Problème de fin du process d'upgrade
- Dernier reset complet du n° de V