# 开发资料(本目录) > **基于 core 开发 provider** → [core/Dev/doc.md](https://github.com/ns-zzj/dsh-scrcpy-core/blob/main/Dev/doc.md) > (契约、core 会调你的动作、你要上报什么、文案与语言规则、画面四件套、坐标与画面尺寸的坑 —— 想给别的平台接一个 provider 就看那份。) ## 架构 ```mermaid flowchart TB CL["DSH 网页(core 的浏览器半区)
菜单 · 每设备一张投屏标签页 · jmuxer 解码
触控 / 按键"] CO["DSH Host(core 插件)
配置 · 环境检测 · 设备发现 · AI 工具与提示词
把动作路由给 provider"] PR["鸿蒙 provider(本包)
只负责:起停 sidecar · 环境检测 · 连接配置 · 上报设备"] SC["Java sidecar(每设备一个进程)
Main --sn SN · ws://127.0.0.1:port
H.264 帧广播 · 触控按键 · GOP 缓存补发"] PH(("鸿蒙设备")) CL <-->|"host.call · RPC"| CO CO -->|"actions / handlers"| PR PR -->|"spawn 拉起"| SC SC <-->|hdc| PH CL <==>|"WebSocket 直连(视频帧 / 触控 / 按键,不经 provider)"| SC ``` **关键点**:浏览器半区**直连 sidecar** 收发视频与触控,provider **不在流路径里** —— 它只负责把 sidecar 拉起来、报设备、报配置。 ## 开发约定 - **sidecar 逻辑**改 `Dev/src/Main.java`;编译产物要同步到 `resources/out/`,**必须用 `--release 8`**(原版 class 目标是 Java 8,用新 JDK 默认编出 69/61 会让老 Java 起不来);命令见 `doc-sidecar.md`。 - **协议改动**要三处同步:`Dev/src/Main.java`(收发)、`Dev/demo/` 里的探针/测试页(验证)、以及 core 浏览器半区里对应那段(消费)。 - **改了 Java 必须重启用到它的进程**(demo 与插件都是启动时加载)。 - 改完 sidecar 要在 demo 里先独立验一遍,再在 DSH 里验,最后才重新打包。 ## Dev/demo/ —— 独立测试件(不依赖 DSH,也不进 npm 包) | 文件 | 干什么 | 怎么跑 | |---|---|---| | `browser-demo.mjs` | 起 sidecar + 递一个网页(jmuxer + `