An Android RDP server experiment that explores how far a normal installed app can go toward exposing the Android screen over RDP without relying on ADB as the runtime architecture. Built in Kotlin with a Go core via gomobile, reusing the go-rdp protocol stack for the RDP wire format. Screen capture uses MediaProjection; input injection uses the Accessibility Service API.
The Kotlin app hosts a foreground service that acquires a MediaProjection virtual display for screen capture. Frames are handed to the Go RDP encoder (linked via gomobile) which handles the RDP protocol, bitmap compression, and client sessions. Input events from RDP clients are translated into Android accessibility actions — taps, swipes, and key presses — through a bound AccessibilityService. No root, no ADB tunnel required.
Runs as a normal installed Android app — no root, no developer mode, no USB tunnel.
Reuses go-rdp's protocol stack via gomobile — RDP encoding, session management, bitmap compression.
System-level screen capture through Android's MediaProjection API.
RDP mouse/keyboard events translated to Android taps, swipes, and keys via AccessibilityService.
Includes a standalone Go mock for testing RDP clients without an Android device.