mirror of
https://github.com/AdvDebug/Brovan
synced 2026-08-09 11:57:17 +00:00
Brovan now runs on Android as a third host alongside Windows and Linux. New Brovan android embedding layer. The emulator becomes a NativeAOT shared library driven by a host app rather than a process with a Main: - BrovanAndroidApi - exported C ABI (init, surface, start, input injection, window enumeration, debugger commands). - AndroidWinManager - IDisplayConnection over ANativeWindow, plus IGdiRenderSupport. - AndroidGdiSurface - software rasteriser (lines, rects, ellipses, polygons) into a per-guest-window backbuffer posted via ANativeWindow_lock/ unlockAndPost, white background. - AndroidVulkanWsi and a generator branch - VK_KHR_android_surface instead of Win32/Xcb. - AndroidInput, AndroidLog, AndroidHost, AndroidGuestWindows, JNI shim, Java bindings. - Launcher app: Material 3 library, in-app program import via SAF, settings, on-screen joystick/D-pad/touchpad controls, opt-in developer console wired to the debugger. - build-apk.sh - Unicorn cross-build, linux-bionic-arm64 publish, bundled OpenSSL, APK assembly. Changes to shared emulator code: - Case-insensitive shipped-DLL resolution in GetWindowsLibPath. Import tables say KERNEL32.dll, System32 ships kernel32.dll; broken on any case-sensitive host, and it surfaced as a guest loading zero modules. - GlobalPropertiesToRemove on the generator ProjectReference. Target-shaped properties leaked into the analyzer, csc silently refused to load it (CS8034 is only a warning), and every source generator emitted nothing. - GdiPrimitive.Hwnd. The four EnqueueGdi* helpers already had the guest HWND and dropped it, making per-window compositing impossible. - Program.SplitCommandLine widened to internal for embedders. Windows and Linux behaviour is unchanged; the new paths are gated on the RID or !IsWindows.