The A/B/C harness series: sltest (Slint) / egtest (egui) / tttest (Tauri 2 → wry → Android WebView/Chromium). Identical scene to sltest: 8580 full-width rows, 150 px + 2 px divider, alternating colors, virtualized (26-element DOM pool), custom touch drag + exponential-decay fling (sltest decay constant 7.42), rAF-driven frame loop. FR logging: the rAF callback records gap/cost exactly like the Rust harnesses; lines batch (~120) and cross the Tauri event bridge once per second (JNI round trip kept off the per-frame path). Rust side drains to a dedicated writer thread → /sdcard/Android/data/wow.gmp.tttest/files/Documents/fr.log (Tauri document_dir = getExternalFilesDir(DOCUMENTS) — the framework CREATES it; a raw std::fs mkdir of the app's external tree is SELinux-denied on Android 11+). Same FR-line format → fr_capture.py is the referee (its launch check now falls back to the package's LAUNCHER activity via monkey for non-NativeActivity apps). Gotchas learned (see frontend/dist/index.html comments): - touch-action is NOT inherited: touches land on .row, so each row must declare touch-action:none or the WebView claims the pan and cancels the page's drag (only a few px register). - Fling velocity must be a per-EVENT EMA; frame-based tracking dies when touch events sample slower than rAF (adb swipe ≈ 17 Hz). - Drag sign: finger up → offset grows (offset -= finger dy). - Tauri v2 'brownfield' is the NORMAL direct-IPC mode (not an app-provides-content mode); the mobile schema rejects security.pattern entirely. - Custom #[tauri::command]s hit the two-pass app-command ACL chicken-and-egg; the core:default event bridge avoids it. - Rust log output needs a logcat backend (log/std + __android_log_write) or it is invisible. Emulator (60 Hz, scripted swipes): 1319 frames, median 16.70 ms, 5 isolated drops (0.38%), all at swipe-injection moments, render cost med 2 ms. aarch64 phone build compiles (11 MB APK); phone testing pending (personal-device policy). Build: harnesses/tttest/scripts/build.sh [x86_64|aarch64] — cargo-tauri CLI (v2.12.4, prebuilt) drives the gradle build; signed with the debug keystore.
21 lines
533 B
TOML
21 lines
533 B
TOML
[package]
|
|
name = "tttest"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
# Tauri v2 mobile (Android): the CLI builds a cdylib .so loaded by the
|
|
# Tauri activity; staticlib/rlib for the template's other targets.
|
|
[lib]
|
|
name = "tttest_lib"
|
|
crate-type = ["staticlib", "cdylib", "rlib"]
|
|
|
|
[build-dependencies]
|
|
tauri-build = { version = "2", features = [] }
|
|
|
|
[dependencies]
|
|
tauri = { version = "2", features = [] }
|
|
tauri-runtime-wry = "2"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
log = { version = "0.4", features = ["std"] }
|