Files
games/deltas/0.3.1/0-pre.2.fix.3.md

4.7 KiB

Delta 0.3.1-0-pre.2.fix.3

Base

Base déclarée : 0.3.1-0-pre.2.fix.2.

Objet

Ce fix corrige la procédure Android après constat que le répertoire local gen/android avait été partiellement modifié par la tentative Gradle 9 abandonnée de 0-pre.2.fix.1.

Aucun patch du projet Android généré n'est réintroduit. Le fix verrouille au contraire le contrat officiel Tauri 2.11.x et rend détectable tout gen/android local qui ne correspond plus à ce contrat.

Diagnostic confirmé

Le smoke 0-pre.2.fix.2 a confirmé :

  • les audits Python, Cargo, Clippy et les cinq tests game-snake-poc-wasm sont propres ;
  • le NDK side-by-side est détecté sans NDK_HOME utilisateur ;
  • le JBR de l'Android Studio local est Java 25, comme le Java global ;
  • gen/android/gradle/wrapper/gradle-wrapper.properties utilisait encore Gradle 9.6.1, trace de fix.1 ;
  • buildSrc restait partiellement au format Tauri 2.11.x et échouait donc sous Gradle 9 sur les appels project.exec/exec.

Le défaut n'est pas dans le host Rust/WASM : l'arbre Android généré local est incohérent et doit être régénéré.

Toolchain Android retenu pour 0.3.1

Le projet conserve le template officiel Tauri 2.11.x :

Gradle              8.14.3
Android Gradle Plugin 8.11.0
Kotlin Gradle Plugin 1.9.25
JDK de gate          17

AGP 8.11 exige JDK 17 au minimum et Gradle 8.14.x prend en charge l'exécution jusqu'à Java 24, pas Java 25. JDK 17 est donc la baseline reproductible retenue pour cette version.

Le Java 25 global et le JBR 25 d'Android Studio restent installables mais ne sont pas utilisés pour cargo tauri android init/dev/build dans 0.3.1.

Régénération obligatoire du projet Android local

Toute machine ayant exécuté 0-pre.2.fix.1 doit supprimer uniquement l'arbre généré Android Snake puis le recréer officiellement :

rm -rf crates/apps/game-snake-poc-tauri/gen/android
export JAVA_HOME=/chemin/vers/jdk-17
"$JAVA_HOME/bin/java" -version
(cd crates/apps/game-snake-poc-tauri && cargo tauri android init)

Le répertoire gen/android est ignoré et n'appartient à aucun delta. Sa suppression n'est donc pas un changement source.

Audit ajouté

audit_distribution_layout.py vérifie désormais un gen/android présent sans le considérer comme source versionnée. Pour la tranche courante, il doit contenir les marqueurs du template Tauri 2.11.x : Gradle 8.14.3, AGP 8.11.0 et Kotlin Gradle Plugin 1.9.25.

Un arbre incomplet ou divergent provoque DIST-LAYOUT-041/042 avec instruction de le supprimer puis de relancer cargo tauri android init sous JDK 17.

Fichiers modifiés

  • Cargo.toml ;
  • README.md ;
  • crates/apps/game-snake-poc-tauri/README.md ;
  • crates/apps/game-snake-poc-tauri/USAGE.md ;
  • docs/plans/002-V0_3_1_TAURI_ANDROID_SNAKE_PLAN.md ;
  • docs/validation/001-VALIDATION_GATES.md ;
  • scripts/audit_distribution_layout.py.

Fichier ajouté

  • deltas/0.3.1/0-pre.2.fix.3.md.

Gate utilisateur

Après application du delta, commencer par disposer d'un JDK 17. Vérifier les JDK déjà installés avant d'en installer un nouveau :

find /usr/lib/jvm "$HOME/.jdks" "$HOME/.sdkman/candidates/java" -maxdepth 3 -type f -path '*/bin/java' 2>/dev/null

Sélectionner ensuite le JDK 17 réel :

export JAVA_HOME=/chemin/vers/jdk-17
"$JAVA_HOME/bin/java" -version

Nettoyer l'arbre Android pollué par fix.1, puis le régénérer avec Tauri :

rm -rf crates/apps/game-snake-poc-tauri/gen/android
(cd crates/apps/game-snake-poc-tauri && cargo tauri android init)

Rejouer ensuite la gate statique/build :

python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates Android Web deltas history
python3 scripts/audit_distribution_layout.py

cargo fmt --all
cargo fmt --all -- --check
cargo check --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test -p game-snake-poc-wasm --all-targets --all-features

Puis le smoke Android :

(cd crates/apps/game-snake-poc-tauri && cargo tauri android dev)

Ne pas exécuter npm run dev directement et ne modifier aucun fichier sous gen/android à la main.

Critère d'acceptation

Le fix est accepté lorsque :

  • les audits et gates Rust restent propres ;
  • audit_distribution_layout.py accepte le gen/android fraîchement généré ;
  • gen/android/gradle/wrapper/gradle-wrapper.properties référence Gradle 8.14.3 ;
  • la commande Android utilise JDK 17 ;
  • cargo tauri android dev assemble, installe et lance le host minimal sans erreur Gradle/Kotlin bloquante.