Player 1.1.6: orientamento da rotation + box WebView-obsoleta via Chromium-swap (no GeckoView) + field-kit #2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/portrait-framebuffer-rotation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Cosa
1. Orientamento rendering guidato da
rotation(fix)Chiarimento sviluppatori firmware: l'orientamento lo detta solo il campo top-level
rotation(0=landscape,1=portrait 90°,3=portrait 270°).sources.orientationè metadata di grafica → ignorato (può valere"portrait"su un sito landscaperotation:0).resolution= tela px (3=1920×1080).applyScreenOrientation(nuovo): su signage Amlogic con SELinux Permissive (es. Navori StiX) il player riallinea il framebuffer del device scrivendopersist.screen.rotation = rotatione riavviando una volta (sys.powerctl, no root). Una grafica cambiata da remoto si auto-applica. Loop-safe + gated OFF-Dahua (zero regressioni sul parco Dahua).applyContentOrientation(framebuffer-aware): rotazione in-app come fallback per pannelli non riorientabili (TV landscape-locked); ruota solo al mismatch → niente quadrato/bande bianche su pannelli già verticali.resolution:3,rotation:0) → device landscape 1920×1080, riempie dritto.2. Box con WebView di sistema obsoleta (Dahua DS04) → Chromium moderno, NON GeckoView
I Dahua DHI-DS04-AI400 (RK3288, Android 8.1) hanno la system WebView a Chromium 61: troppo vecchia per il CSS moderno delle grafiche (
:has()ecc.) → card vuote.gecko(GeckoView bundled): la sua WebRender corrompe la rasterizzazione GPU sul Mali-T764 (morsi rossi random agli angoli, che si spostano a ogni refresh). Mappato a terra: irrisolvibile via pref (crash o blank), via--setpref(ignorato), via versione (128/142/149 = whack-a-mole). Il flavor gecko è stato rimosso → il player torna a variante singola (l'app normale).tools/dahua-ds04-webview.sh(nuovo, ripetibile): builda una WebView Chromium 108 ripacchettizzata comecom.android.webview(patch binario same-length; firma platform test-key AOSP) e la inietta via root (swap del/system/app/webview/webview.apk+ estrazione lib native + reboot), poi installa l'app. Tutto via adb-rete col bypass watchdog (getprop …;). Include rollback.3. Tool field-kit (
tools/)stix-reclaim: riconversione Navori StiX 3700 (Amlogic S922X) a Kipanga no-touch (SD + tasto + rete):build-sd/provision/recover.dahua-ds04-reclaim.sh: riconversione Dahua DS04 (RK3288) a Kipanga DO via adb-rete (bypass watchdoggetprop).dahua-ds04-webview.sh: vedi §2.4. launcher: lancio HOME su
BOOT_COMPLETEDSu alcuni firmware (es. StiX) la HOME preferita del DO non è onorata al boot → stallo sul chooser di sistema. Il launcher ora lancia
MainActivitysuBOOT_COMPLETED(solo, non suMY_PACKAGE_REPLACED).5. Release 1.1.6 (versionCode 9) — APK in
dist/kipanga-field-kit/apks/Player (variante singola, minSdk 26) + launcher (con fix BootReceiver), release-signed, versionate nel field-kit per gli script di deploy.
Test
persist.screen.rotationpersiste.Note deploy
minSdk28→26 (Android 8.0+) per coprire i box vecchi con la system WebView.GeckoView/WebRender corrompe la rasterizzazione GPU sul Mali-T764 del Dahua DS04 (morsi random agli angoli, irrisolvibile via pref/versione). La strada giusta e' Chromium moderno come system WebView + l'app normale (flavor standard): Chromium ha gestione GPU matura sui chip vecchi, niente glitch, e non serve NESSUNA modifica al player. Rimosso: product flavors standard/gecko, dipendenza GeckoView, repo Mozilla, src/{gecko,standard}/EngineHooks, hook in PageRenderer, serving gecko-only in LocalMediaServer (bridge/synthetic-json), render-context in PlayerActivity, build per-flavor in release.sh. Tenuto: minSdk 26 (serve al DS04 Android 8.1 con la system WebView), tools/dahua-ds04-reclaim.sh. Lo swap del system WebView a Chromium moderno e' una procedura device-side (vedi tools/dahua-ds04-webview.sh).Procedura device-side per portare un Chromium moderno (Bromite SystemWebView 108) come system WebView sui Dahua DS04 (RK3288/Android 8.1), cosi' l'app normale (variante singola) rende le grafiche senza i glitch WebRender/Mali di GeckoView. Due fasi: A) build (host, una volta): scarica Bromite (sha256 verificato), rinomina il package org.bromite.webview -> com.android.webview con patch BINARIO same-length (apktool non regge il resource-package custom di Chromium), firma con la platform test-key AOSP pubblica. B) deploy (root via su): backup + sostituzione /system/app/webview/webview.apk, estrazione manuale della lib nativa (extractNativeLibs=true), reboot, verifica provider, install dell'app. Tutto via adb-over-rete col prefisso watchdog getprop in g() (NON serve -x: verificato, non esiste come flag adb/pm; il vero requisito e' il prefisso). Uso: ./tools/dahua-ds04-webview.sh [IP] | ... build (solo build). Include comando di rollback. Vedi memory project-kipanga-render-engine-strategy.Player: orientamento da rotation + tool StiX reclaim (1.1.6)to Player 1.1.6: orientamento da rotation + box WebView-obsoleta via Chromium-swap (no GeckoView) + field-kit- size-check lib nativa: wc -c invece di 'busybox stat' (applet assente su questo busybox) - trap EXIT: ${HPID:-} per non triggerare set -u (unbound variable a fine script) - verifica provider: grep Current (il pattern con spazi si rompeva nel quoting di g()) Deploy completo riuscito: WebView Chromium 108 + app, grafica complessa resa pulita.