glasses: launch guest on Shizuku VirtualDisplay + binocular render
- VmShizukuService is a Shizuku UserService only; remove its <service> manifest entry (ServiceStarter instantiates it reflectively, an Android service entry causes ClassCastException) - VirtualDisplayFrameSource: await binder via ShizukuVdClient.bindForResult(5s), expose virtualDisplayId + shizukuBinder, stop the UserService on release - VmGlassesController: serialize acquire via Mutex, use double-buffered SurfaceTexture (DisplayManagerService rejects single-buffer), launch the guest on the VD with ShizukuVdBinder.launchActivity - GlassesScreen: render controller.frameSource (Running) directly; drop the LaunchedEffect acquire - DebugTestReceiver: register at runtime from MainActivity (background manifest receivers are blocked on Android 12+)
This commit is contained in:
@@ -68,11 +68,10 @@
|
||||
android:exported="false"
|
||||
android:foregroundServiceType="mediaPlayback" />
|
||||
|
||||
<!-- Shizuku UserService для системных вызовов -->
|
||||
<service
|
||||
android:name=".VmShizukuService"
|
||||
android:exported="true"
|
||||
android:process=":shizuku_vd" />
|
||||
<!-- VmShizukuService НЕ объявляется здесь как <service> — это Shizuku UserService,
|
||||
который ServiceStarter создаёт через reflection в отдельном isolated-процессе.
|
||||
Если объявить — Shizuku-сервер не сможет привести класс к IBinder
|
||||
(ClassCastException в moe.shizuku.starter.ServiceStarter). -->
|
||||
|
||||
<!-- Shizuku v12+ требует ShizukuProvider в манифесте — он сам вытаскивает binder
|
||||
через ContentProvider IPC и инициализирует Shizuku-клиент. Без него binder не придёт.
|
||||
|
||||
Reference in New Issue
Block a user