From 077eab2b79384d084fd5c0eb8c39119b4e97e9d8 Mon Sep 17 00:00:00 2001 From: saphid <4596216+saphid@users.noreply.github.com> Date: Mon, 28 Sep 2026 20:19:38 +1000 Subject: [PATCH] Add LAUNCHER to the real VR activity when only an activity-alias has it Lepton's apk-info-extractor ignores , and Godot 4 exports put LAUNCHER only on an alias (com.godot.game.GodotAppLauncher). Open Saber Plus 0.7.67 installed but Lepton exited with 'APP_ACTIVITY is empty'. Count only real activities as launchable and patch the activity's VR intent filter. Verified on the Frame: Open Saber Plus launches and renders. Co-Authored-By: Claude Opus 5.5 (1M context) --- tests/test_frame_apk_vr.py | 22 +++++++++++++++++++--- ui/frame_apk_vr.py | 8 +++++--- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/tests/test_frame_apk_vr.py b/tests/test_frame_apk_vr.py index 8b801bc..aa0d984 100644 --- a/tests/test_frame_apk_vr.py +++ b/tests/test_frame_apk_vr.py @@ -18,11 +18,11 @@ import frame_android from test_frame_apk import pool -def manifest(utf8=False, launcher=False, category=None, samsung=False, split=False): +def manifest(utf8=False, launcher=False, category=None, samsung=False, split=False, alias=False): strings = ['manifest', 'package', 'org.test.vr', 'application', 'activity', 'intent-filter', 'action', 'category', 'name', vr.MAIN, category or next(iter(sorted(vr.VR))), vr.LAUNCHER, 'http://schemas.android.com/apk/res/android', 'meta-data', 'value', - 'com.samsung.android.vr.application.mode', 'vr_only'] + 'com.samsung.android.vr.application.mode', 'vr_only', 'activity-alias'] def start(tag, attrs=()): body = struct.pack('; Godot 4 puts LAUNCHER only there. + return {'launchable': any(LAUNCHER in f['categories'] for f in mains if not f['alias']), + 'vr_activity': bool(vr_filters), 'vr': bool(vr_filters) or samsung}, \ + [f for f in vr_filters if not f['alias']] def _append_string(chunk, text):