{"id":24092380,"url":"https://github.com/heyuanjie87/adbd","last_synced_at":"2025-09-17T01:34:01.281Z","repository":{"id":39759880,"uuid":"159640948","full_name":"heyuanjie87/adbd","owner":"heyuanjie87","description":"Android Debug Bridge daemon implementation in RT-Thread","archived":false,"fork":false,"pushed_at":"2023-06-13T05:12:52.000Z","size":10419,"stargazers_count":39,"open_issues_count":4,"forks_count":24,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-06-13T06:24:31.855Z","etag":null,"topics":["adb","mcu","rtos"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/heyuanjie87.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-29T09:29:00.000Z","updated_at":"2023-05-11T07:19:48.000Z","dependencies_parsed_at":"2022-08-31T05:20:55.343Z","dependency_job_id":null,"html_url":"https://github.com/heyuanjie87/adbd","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heyuanjie87%2Fadbd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heyuanjie87%2Fadbd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heyuanjie87%2Fadbd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heyuanjie87%2Fadbd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heyuanjie87","download_url":"https://codeload.github.com/heyuanjie87/adbd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233313158,"owners_count":18657165,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adb","mcu","rtos"],"created_at":"2025-01-10T07:44:58.516Z","updated_at":"2025-09-17T01:33:55.492Z","avatar_url":"https://github.com/heyuanjie87.png","language":"C","funding_links":[],"categories":["Packages"],"sub_categories":["Tools"],"readme":"# Android Debug Bridge daemon implementation in RT-Thread\n\n在 PC 与 RT-Thread 之间建立文件传输与执行 shell 的通道。\n\n## 1. 已实现功能\n\n- 通信：tcpip\n- 通信：usb\n- 服务：文件 pull/push\n- 服务：shell\n\n## 2. 依赖\n\n- 传输 - LWIP/winusb\n- 文件系统、POSIX、LIBC\n- shell - 依赖finsh/msh\n- 上位机工具\n\n## 3. 配置ADBD\n\n### 3.1 启用ADBD\n\nenv配置如下:\n\n```base\nUsing TCPIP transfer                    /* 启用 TCP/IP传输数据 */\nUsing USB transfer                      /* 启动 USB 传输数据 */\nSet transfer thread stack size          /* 设置传输线程栈大小 */\nEnable Shell service                    /* 开启 Shell 服务 */\nEnable File service                     /* 开启 文件 服务 */\n  Set file service thread stack size    /* 设置文件服务线程栈大小 */\n  Set file service receive timeout      /* 设置文件接收超时时间 */\nEnable external MOD                     /* 使能外部模块 */\n  Enable File SYNC Mod                  /* 启用文件同步模块，支持校验MD5，跳过相同文件 */\n  Enable File LIST Mod                  /* 启用获取文件目录模块 */\n  Enable ADB service discovery          /* 启用局域网发现服务 */\n```\n\n## 3. 外部模块\n\n在ADB文件服务的基础上，实现了一套数据传输机制。PC端可使用脚本往板子上发送任意数据。\n\n### 3.1 基本原理\n\nADB文件服务功能可以将PC端的路径原封不动的发给板子。当PC端输入 `adb push ./pc_sync /dev_sync` 命令时，ADB会将远端路径 `/dev_sync` 原封不动的发给设备端。即使包含特殊的字符，也会发送。可以利用这个特性，将远端目录按照一定格式进行构造，然后设备解析构造过的路径，从而执行特殊的操作。当PC机需要发送数据时，先将需要发送的数据生成文件，然后构造特殊的远端路径，执行 adb push 命令，将临时文件发送到设备端。完成一次 PC 到设备端的数据交换。设备端到PC的数据传递原理一样。\n\n### 3.2 文件同步\n\n文件同步时，PC端需要知道设备端的文件信息。所以先构造特殊命令，从设备端把文件信息拉回来。PC端根据设备端发回的信息，判断哪些文件需要同步，哪些文件需要删除。同步文件直接调用 adb push 命令，将文件发送到设备端。删除文件则需要给设备端发送需要删除的文件信息，让设备自行删除。\n\n### 3.2.1 脚本使用\n\n脚本路径为: `adbd/tools/script/adb_sync.py`。在命令行中输入 `python adb_sync.py 本地路径/ 远端路径/`,即可将本地的一个文件夹同步到设备端。\n\n## 4. 参考文档\n\n### 4.1 ADB官方文档\n\n- [ADB简介](docs/OVERVIEW.TXT)\n- [协议简介](docs/PROTOCOL.TXT)\n- [文件服务](docs/SYNC.TXT)\n\n### PC工具\n\n- win:adbd/tools/adb/adb.exe\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheyuanjie87%2Fadbd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheyuanjie87%2Fadbd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheyuanjie87%2Fadbd/lists"}