docs(handoff): record Android launch verification; update status

Closes the APK launch verification punch-list item. Three fixes in
202a64d boot the app on Pixel_7 AVD (Android 14, x86_64). Next open
arcs: Phase 8 (sync) or Android JNI follow-ups.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
funman300
2026-05-08 19:23:15 -07:00
parent 16242e6d77
commit 5199a5e499
2 changed files with 65 additions and 34 deletions
+34 -4
View File
@@ -6,8 +6,9 @@ project follows [Semantic Versioning](https://semver.org/).
## [Unreleased]
**`a449f60`** — Stats overlay Prev/Next replay selector spawn site
(2026-05-08). See [0.21.9] for the committed detail once cut.
**`202a64d`** — Android APK launch fixes (2026-05-08).
**`16242e6`** — Ignore .idea/ IDE files (2026-05-08).
See [0.21.9] for the committed detail once cut.
## [0.21.9] — pending cut
@@ -45,12 +46,41 @@ v0.19.0.
`clippy::assertions_on_constants` (constant-fold at compile time
rather than a runtime no-op).
### Fixed (post-cut, same pending release)
- **Android APK launch: export `android_main`** (`202a64d`).
`NativeActivity` dlopen-s `libsolitaire_app.so` and calls
`android_main` as its entry point. Without the symbol the app
crashed immediately with `UnsatisfiedLinkError`. The new function
sets `bevy::android::ANDROID_APP` (required by `WinitPlugin`) then
delegates to `run()` — equivalent to what `#[bevy_main]` would
generate, but usable on an arbitrary entry point name.
- **Android APK launch: gate `resize_constraints` to non-Android**
(`202a64d`). On Android `max_width/max_height` default to `0.0`;
Bevy's clamp panicked with `min=800 > max=0`.
- **Android APK launch: gate `apply_smart_default_window_size` to
non-Android** (`202a64d`). The system calls `.clamp(800.0,
logical_w)` which panics when the emulator reports zero window
dimensions during early Android lifecycle events. The OS controls
window size on Android; the system is irrelevant there.
- **Ignore `.idea/` IDE project files** (`16242e6`). Android Studio
created `.idea/` when the project was opened during APK
verification; added to `.gitignore` and removed the accidentally-
committed files.
### Android verification result
APK boots on `x86_64-linux-android` in a Pixel_7 AVD (Android 14 /
API 34, SwiftShader Vulkan). App runs for 2+ minutes without crashing.
Bevy renderer initialises, splash screen loads. This is the first
confirmed end-to-end device run.
### Stats
- Tests: 1282 passing / 0 failing (was 1276; +6 selector tests)
- Tests: 1282 passing / 0 failing (unchanged)
- Clippy: clean
- Crates touched: `solitaire_engine` (stats_plugin.rs,
replay_overlay.rs)
replay_overlay.rs), `solitaire_app` (lib.rs, .gitignore)
## [0.21.8] — 2026-05-08