0.3.1-0-pre.4.fix.1
This commit is contained in:
94
deltas/0.3.1/0-pre.4.fix.1.md
Normal file
94
deltas/0.3.1/0-pre.4.fix.1.md
Normal file
@@ -0,0 +1,94 @@
|
||||
<!-- file: deltas/0.3.1/0-pre.4.fix.1.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# Delta 0.3.1-0-pre.4.fix.1
|
||||
|
||||
## Base
|
||||
|
||||
Base déclarée : `0.3.1-0-pre.4`.
|
||||
|
||||
## Objet
|
||||
|
||||
Corriger le chemin de développement Tauri Android sur appareil réel après la gate ARM64 et formaliser la limite observée lors du teardown WebView/Activity, sans introduire de fork local de Tauri/Wry ni modifier le projet Android généré.
|
||||
|
||||
## Résultats de la gate `0-pre.4`
|
||||
|
||||
La gate workspace et le smoke AVD x86_64 sont propres : audits, formatage, `cargo check`, Clippy strict et les cinq tests `game-snake-poc-wasm` passent. Le lifecycle journalise correctement `runtime paused/resumed` et `visibility hidden/visible`.
|
||||
|
||||
Le smoke supplémentaire sur appareil Android ARM64 réel a confirmé :
|
||||
|
||||
- ABI Android `arm64-v8a` et cible Rust `aarch64-linux-android` ;
|
||||
- compilation du `cdylib` ARM64 ;
|
||||
- assemblage, streamed install et démarrage de `MainActivity` ;
|
||||
- chargement des assets ;
|
||||
- initialisation WASM ;
|
||||
- Canvas jouable et touch observé ;
|
||||
- provenance `android / tauri-webview / wasm / phone / touch` ;
|
||||
- pause lifecycle avant sortie.
|
||||
|
||||
Deux écarts ont été révélés.
|
||||
|
||||
Premièrement, le mode `dev` sur téléphone physique remplace automatiquement `localhost` par une adresse LAN. Le tunnel USB ADB `reverse tcp:1436 tcp:1436` associé à `cargo tauri android dev --host 127.0.0.1` rend le chargement HTTP reproductible sans dépendre du LAN.
|
||||
|
||||
Deuxièmement, le frontend utilisait encore un WebSocket HMR séparé sur le port `1437`. Le HTML/WASM se chargeait, mais Vite journalisait `failed to connect to websocket`. Ce défaut appartient au projet et est corrigé par ce fix : HTTP et WebSocket Vite partagent désormais le port `1436`, qui est le port tunnelé par ADB.
|
||||
|
||||
Enfin, le Back système sur le Galaxy S9+ de validation a provoqué pendant le teardown natif :
|
||||
|
||||
```text
|
||||
FORTIFY: pthread_mutex_lock called on a destroyed mutex
|
||||
```
|
||||
|
||||
L'abort arrive après `runtime paused` / `visibility hidden` et avant `pagehide` / `runtime disposed`. La gate résout Tauri `2.11.5` avec Wry `0.55.1`. Des versions Wry postérieures ont modifié le lifecycle Android et la synchronisation des request handlers, mais le projet ne force pas une version Wry incompatible derrière la pile Tauri stable ni ne patch `gen/android`. Ce crash reste une limite externe du POC à retester avec l'APK autonome de la beta.
|
||||
|
||||
## Changements
|
||||
|
||||
- version workspace : `0.3.1-0-pre.4.fix.1` ;
|
||||
- WebSocket Vite/HMR fixé sur le même host de développement et le même port `1436` que HTTP ;
|
||||
- suppression du port HMR séparé `1437` ;
|
||||
- procédure de smoke appareil réel documentée avec tunnel ADB USB et `--host 127.0.0.1` ;
|
||||
- correspondance ABI `arm64-v8a` / `aarch64-linux-android` documentée ;
|
||||
- crash Back/teardown réel enregistré comme limite du POC et non comme capacité validée ;
|
||||
- audit de distribution renforcé pour refuser le retour d'un second port WebSocket non tunnelé.
|
||||
|
||||
## Invariants
|
||||
|
||||
- aucun fichier sous `gen/android` n'est modifié ou livré ;
|
||||
- aucun handler `onBackButtonPress` n'est ajouté pour masquer le crash de teardown ;
|
||||
- aucune surcharge manuelle de Wry/Tauri n'est introduite ;
|
||||
- aucun gameplay ne quitte Rust/WASM ;
|
||||
- SDL3 natif reste la direction Android de production ;
|
||||
- l'APK autonome de `2-beta.1` doit distinguer un défaut du mode `dev` d'un défaut général de teardown Tauri/Wry/WebView.
|
||||
|
||||
## Gate utilisateur
|
||||
|
||||
Gate statique et Rust :
|
||||
|
||||
```bash
|
||||
export JAVA_HOME=/usr/lib/jvm/temurin-17-jdk-amd64
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
Smoke appareil réel, avec le `<serial>` fourni par `adb devices -l` :
|
||||
|
||||
```bash
|
||||
adb -s <serial> reverse --remove-all
|
||||
adb -s <serial> reverse tcp:1436 tcp:1436
|
||||
adb -s <serial> reverse --list
|
||||
|
||||
(cd crates/apps/game-snake-poc-tauri && cargo tauri android dev --host 127.0.0.1)
|
||||
```
|
||||
|
||||
Vérifier : Canvas/inputs/assets/WASM/provenance/lifecycle et absence de l'erreur Vite `failed to connect to websocket`. Tester Back une fois et conserver le résultat ; si l'abort natif documenté reste reproductible, il n'est pas contourné dans ce fix et sera retesté sur l'APK autonome en beta.
|
||||
|
||||
## Suite prévue
|
||||
|
||||
Aucune extraction `0-pre.5` n'est justifiée. Après validation de ce fix, passer directement à `0.3.1-2-beta.1` pour la gate large, le build WASM release, le packaging APK et les smokes package AVD + ARM64 réel.
|
||||
Reference in New Issue
Block a user