-
Notifications
You must be signed in to change notification settings - Fork 8
External Research and Trade offs
This page defines how to use external reference implementations in the repository and records verified, durable trade-offs. It is neither a description of current behavior nor a task list. Current behavior is always defined by code, tests, and the owning technical topic.
| Reference directory | Questions it can answer |
|---|---|
external/scrcpy |
Official protocol, server arguments, and socket/metadata/control semantics |
external/dadb |
Current ADB library behavior for authentication, transports, shell, and the helper |
external/Easycontrol, external/ScrcpyForAndroid*
|
Android remote-control product shape, mobile integration, and local engineering strategies |
external/Kadb, external/libadb-android
|
Alternative Kotlin/Android ADB boundaries and implementation choices |
external/adb-mobile-ios |
Mobile ADB/TLS research reference |
external/screen-remote-ios |
Form density, window rhythm, remote chrome, and asset semantics |
External directories may be submodules or workspace references whose versions change. Record the inspected revision or reproducible code location before citing a conclusion.
- Classify the current problem as protocol, connection, media, control, UI, or engineering organization.
- Read the current project's canonical topic and code to establish a baseline.
- Select only external implementations relevant to that problem and identify their version, platform, and assumptions.
- Express observations as a portable strategy plus conditions where it does not apply; do not copy directories or state models mechanically.
- Verify with this project's tests, logs, or device experiments.
- Merge verified durable conclusions into the owning canonical topic. Keep unverified ideas in issues rather than creating a second wiki design.
- Server arguments, metadata, control messages, and socket roles follow the bundled scrcpy version.
- Video, optional audio, and control sockets are established sequentially; concurrency in an external implementation cannot override this invariant.
- Strict protocol reads, single resource ownership, cancellable startup, and deterministic cleanup outrank local “faster” behavior.
- Do not extend private protocol semantics unless server and client change together with complete regression evidence.
- dadb is the primary ADB source of truth. Other ADB projects help compare boundaries; they do not justify a parallel connection stack.
- Candidate dialing may race, while scrcpy socket establishment may not. These concurrency boundaries are distinct.
- TLS, pairing, and device identity use peer/serial semantics rather than inferring durable identity from a port or transient IP.
- Hardware, low-latency, C2, or buffer strategies are candidate preferences only and require capability checks and runtime fallback.
- External size, buffering, or decoder-selection rules are adopted only after validation on the current device matrix.
- An optimization preserves diagnostic signals and compares before/after on the same device, parameters, and operation path.
- The iOS prototype contributes design tokens, form density, and interaction semantics, not an Android page architecture.
- Android keeps
DialogPage, section/card/row structures, and Compose lifecycle behavior; UI Design System is authoritative. - Prefer tintable Android vectors for standard system semantics. Remote-control chrome may use reference assets when licensing and provenance are clear.
- Applied assets are represented by
res/drawable*and real call sites; do not maintain a manual asset inventory that can drift.
- “The external project does this, so the current project should too.”
- “The official implementation lacks a local strategy, so the local strategy must be removed.”
- “It is faster on one device, so the parameter is universal.”
- “The prototype is full screen, so Android dialogs should all be replaced.”
- “A plan item is unchecked, so the capability is definitely absent from current code.”
Temporary research belongs in an issue or work note and records at least: problem, current baseline, reference project and revision, differences, experiment, result, risk, and final destination. Only verified conclusions that will continue guiding implementation enter the wiki.
Canonical topics: Runtime Main Path, ADB, USB, and Wireless, Encoding and Decoding, and Engineering and Verification Rules.
- Overview / 总览
- Quick Start / 快速开始
- Connection & Pairing / 连接设备与配对
- Session Management / 会话管理
- Remote Control / 远程控制
- Settings / 设置
- Management Features / 管理功能
- FAQ / 常见问题
- Overview / 总览
- Technical Index / 技术文档索引
- Audit Checklist / 初始化与更新清单
- Conventions / 文档维护约定
- Architecture / 架构
- Module Map / 模块地图与边界
- Runtime Path / 运行时主链路
- Session State / 会话状态与事件
- Session Lifecycle / 会话配置与连接生命周期
- ADB, USB & Wireless / ADB、USB 与无线
- ADB Lifecycle / ADB 连接生命周期
- Pairing / 设备配对与无线调试
- Codecs / 编码与解码
- Remote Interaction / 远程交互性能与悬浮菜单
- Clipboard / 剪贴板同步
- Management / 管理功能
- Events & Shell / 事件、监控与 Shell
- Logging / 日志系统与维护
- Troubleshooting / 分层排障方法
- UI Design / UI 设计系统
- Bilingual Copy / 双语与文案
- Remote UI Analysis / 远程 UI 布局分析
- Engineering Rules / 工程与验证规则
- External Research / 外部研究与取舍
Technical topics appear here only after their page-level audit is complete. / 技术主题仅在完成逐页审核后加入侧边栏。