--- name: gametime-dev-environment description: memory note gametime-dev-environment metadata: type: project --- # GameTime — Environnement de build local Flutter SDK et Android SDK sont installés et opérationnels sur la machine du projet (2026-07-17). Premier APK debug buildé avec succès le 2026-07-17. ## Flutter - Installé via le paquet AUR `flutter-bin` (3.44.6, stable), pas `flutter` (source AUR) — ce dernier a un conflit de dépendance avec `dart` déjà présent sur le système (`dart<3.12.0` requis alors que 3.12.2 est installé). - Binaire `flutter` disponible dans `/usr/bin/flutter` (wrapper `flutter-bin`), SDK réel monté via unionfs sous `~/.cache/flutter_sdk`. ## Android SDK - Installé via le paquet AUR `android-sdk-cmdline-tools-latest`, posé dans `/opt/android-sdk` (appartenait à root par défaut — il a fallu `chown -R anthony:anthony /opt/android-sdk` pour que `sdkmanager` puisse installer des composants sans sudo). - Composants installés : `platform-tools`, `platforms;android-34/35/36`, `build-tools;34.0.0/28.0.3/36.0.0`, NDK 28.2.13676358, CMake 3.22.1 (certains installés automatiquement par Gradle au premier build). - Licences acceptées via `sdkmanager --licenses`. - `flutter config --android-sdk /opt/android-sdk` exécuté pour lier Flutter au SDK. ## JDK — point de friction important - Le JDK système par défaut est `java-26-openjdk` (trop récent : `Unsupported class file major version 70` avec Gradle 9.1 utilisé par le template Flutter). - Installé `jdk21-openjdk` (dépôt officiel Arch, pas besoin d'AUR) en complément, sans le mettre par défaut système. - Flutter configuré spécifiquement pour l'utiliser : `flutter config --jdk-dir=/usr/lib/jvm/java-21-openjdk`. Cette config est stockée dans la config Flutter (probablement `~/.config/flutter/settings` ou équivalent), donc persistante indépendamment du JDK système par défaut. ## Variables d'environnement persistées Ajoutées dans `~/.zshrc`, `~/.bashrc` et `~/.config/fish/config.fish` (le shell de login est zsh, mais les agents peuvent tourner en bash) : ``` ANDROID_HOME=/opt/android-sdk ANDROID_SDK_ROOT=/opt/android-sdk PATH inclut $ANDROID_HOME/cmdline-tools/latest/bin et $ANDROID_HOME/platform-tools ``` ## Limite connue - Pas de Chrome installé (web toolchain Flutter indisponible), sans impact puisque la cible du projet est mobile (Android/iOS), pas web. - Pas de device/émulateur Android connecté — seul `flutter build apk --debug` (sans device) est utilisable pour produire l'APK à transférer manuellement sur le téléphone de l'utilisateur (pas de `flutter run` direct sur device depuis cet environnement). - **Les sandbox des agents (DevBackend, DevFrontend, etc.) n'ont pas d'accès réseau à pub.dev**, contrairement à l'environnement de Main (Bash direct). Conséquence pratique : `flutter pub get`, `flutter analyze` (si dépend de packages non encore en cache) et `flutter build apk` doivent être exécutés par Main en vérification finale après le travail de code d'un agent, pas par l'agent lui-même. Les agents peuvent en revanche modifier pubspec.yaml, écrire du code Dart, etc. ## Commande de build APK de référence ```bash export ANDROID_HOME=/opt/android-sdk export PATH="$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH" cd /home/anthony/Documents/Projects/GameTime flutter pub get && flutter analyze && flutter build apk --debug ``` APK produit : `build/app/outputs/flutter-apk/app-debug.apk`.