Skip to content

Project Positioning and Capability Boundary

星冉 edited this page Jul 21, 2026 · 1 revision

Project Positioning and Capability Boundary

中文

Last updated: 2026-07-22

What the project is

Screen Remote is an Android client for remote control and ADB-based device management. It uses dadb for Android-side ADB capabilities, starts a bundled scrcpy server, establishes media and control channels, and manages sessions, remote display, and device operations in one application.

The project name follows the repository, application ID, and current UI: Screen Remote. The obsolete Scrcpy Mobile name from old documentation is no longer used.

Repository boundaries

Location Responsibility
Outer repository Organizes the Android app subrepository, external dependencies, and external/wiki/.
Screen-Remote/ Independently buildable Android application repository.
external/dadb/ Gradle included build that provides dadb, Android transports, and the device-side helper.
external/wiki/ Long-lived user and developer documentation.

The app subrepository and outer repository are separate Git worktrees. Code, external dependencies, and wiki edits must not be mixed in an unconfirmed write.

Current user scenarios

Based on the current feature/ boundaries and MainScreen routing, the product provides:

  • Sessions: save, group, and edit connection candidates and scrcpy configuration.
  • Remote control: establish ADB and scrcpy runtime, display video and optional audio, and send touch, key, text, and other control messages.
  • Device management: use an existing ADB connection for device information, files, apps, processes, port forwarding, and commands.
  • Device access: USB Host, ordinary TCP, and Android Wireless Debugging pairing/connection paths.
  • Configuration and diagnostics: theme, language, logging, backup/restore, ADB keys, and codec selection.

Canonical topic pages describe exact behavior. This page defines the product boundary without duplicating implementation details.

Technical shape

  • Kotlin and Jetpack Compose in one Android application module.
  • Java/Kotlin target 21 with Android minSdk 23, targetSdk 37, and compileSdk 37.
  • C/C++17 JNI boundary under app/src/main/cpp/.
  • external/dadb included build for ADB protocol, Android transports, and helper capabilities.
  • Bundled and verified scrcpy server 4.1.

See Build and Entry Points for exact versions and commands.

Code ownership

Layer Ownership
core Shared models, persistence foundations, design system, internationalization, updates, and general rules.
infrastructure ADB, scrcpy, protocols, transports, media, and runtime implementations.
feature User scenarios for sessions, remote control, device management, settings, and codecs.
service Android foreground service and system-lifecycle coordination.
app Application, Activity, top-level assembly, and entry points.

Core mental model

  1. A saved session defines connection candidates and user configuration.
  2. The ADB transport provides device communication, but ADB connected does not mean scrcpy media and control are ready.
  3. The scrcpy server, video/audio/control sockets, metadata, decoders, and controller form the remote runtime together.
  4. Video, optional audio, and control sockets must be established strictly and sequentially.
  5. User configuration, device-capability cache, and negotiated runtime facts remain separate.

Detailed paths will appear in the Technical Documentation Index after their audits complete.

Clone this wiki locally