How rustvnc/rustvncserver-android works
This crate exposes rustvncserver to Android applications through JNI. Java configures service class names before loading the library; native registration then exposes server lifecycle and control methods, while server events are dispatched to Java callbacks. The README documents framebuffer, clipboard, repeater/reverse connections, client information, and CopyRect capabilities. These bindings share one source file; unsampled registration and event wiring are represented only where supported by the excerpts or documentation.
Main entry points: lib.rs VNC bindings
Components 16
JNI Setup
- JNI load
src/lib.rs - Runtime config
src/lib.rs - Native registration
src/lib.rs
Server Lifecycle
- VNC bindings
src/lib.rs - Server state
src/lib.rs - Async runtime
src/lib.rs - Event dispatch
src/lib.rs
Server Controls
- Framebuffer controls
src/lib.rs - Clipboard controls
src/lib.rs - Connection controls
src/lib.rs - CopyRect controls
src/lib.rs
Other components
- Android Java app
- MainService
- InputService
- rustvncserver
- VNC clients
Connections 24
- Android Java app → JNI load: loads library
- Android Java app → Runtime config: sets properties
- JNI load → Native registration: registers natives
- Runtime config → Native registration: configures classes
- Native registration → MainService: registers methods
- Native registration → InputService: registers methods
- MainService → VNC bindings: invokes natives
- InputService → VNC bindings: invokes natives
- VNC bindings → Server state: manages
- VNC bindings → Async runtime: runs async work
- VNC bindings → rustvncserver: starts and controls
- Server state → rustvncserver: holds server
- rustvncserver → Event dispatch: emits events
- Event dispatch → MainService: calls callbacks
- Event dispatch → InputService: calls callbacks
- VNC bindings → Framebuffer controls: exposes updates
- Framebuffer controls → rustvncserver: updates or resizes
- VNC bindings → Clipboard controls: exposes transfer
- Clipboard controls → rustvncserver: sends text
- VNC bindings → Connection controls: exposes connections
- Connection controls → rustvncserver: manages clients
- VNC bindings → CopyRect controls: exposes operations
- CopyRect controls → rustvncserver: performs copy
- VNC clients → rustvncserver: connect