ClipShare

aa2013GPL-3.0活跃维护

跨平台剪贴板历史与同步工具,支持 Android、Windows、Linux、MacOS,可在 Android 10 以上后台同步文本、图片、文件和短信。

A cross-platform (currently Android, Windows, Linux, MacOS) clipboard history and synchronization software that supports background sync on Android 10 and above, and can copy and sync text, images, files, and text messages. / 一个支持跨平台(目前为Android、Windows、Linux、MacOS)的剪贴板历史记录与同步软件,支持Android10以上版本后台同步,支持文本、图片、文件、短信的复制和同步。

v1.5.4-downgrade-linux-glibc发布于 2026-09-28 06:35 UTC349star +2 / 7 天24fork同步于 2026-11-10 18:01 UTC

怎么上手

由 README 提炼,执行前请确认
flutter pub get
flutter run
硬件要求按 README 说明

README 未说明具体硬件或显存要求;支持 Android、Windows、Linux、macOS,iOS 已加入构建但未充分测试。

有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

跨平台剪贴板同步工具,支持文本图片文件短信在多设备间同步

跨平台剪贴板历史与同步工具,支持 Android、Windows、Linux、MacOS,可在 Android 10 以上后台同步文本、图片、文件和短信。

核心能力

  • 同网段设备自动发现后通过 Socket 直连同步
  • 通过中转服务或 WebDAV/S3 对象存储实现公网同步
  • 管理历史记录,支持搜索、筛选、标签、统计与导出 Excel
  • 支持文件拖拽发送并跟踪同步进度
  • 提供应用密码、重新验证、加密密钥等安全配置

容易踩的坑

开发环境要求 Flutter 3.41.9、Dart SDK >=3.8.0 <4.0.0,Android 构建需 JDK 17;公网中转需另行部署 ForwardServer,自建通知服务默认监听 8083 端口;WebDAV/S3 存储中转仍为实验性功能,项目重构期间暂停发布新版本和接收 PR。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v1.5.4-downgrade-linux-glibc
  1. v1.5.4-downgrade-linux-glibc最新正式版2026-09-28 · 2026-09-28 06:35 UTC

    Linux 安装包降低glibc版本到2.34 其他平台相对 1.5.4-0908 版本无变化 Full Changelog: https://github.com/aa2013/ClipShare/compare/v1.5.4-0908...v1.5.4-downgrade-linux-glibc

  2. v1.5.4-09082026-09-08 · 2026-09-08 13:16 UTC
    查看更新说明

    ⚡ 本机提取内容自动复制作用于所有类型 #89 Full Changelog: https://github.com/aa2013/ClipShare/compare/v1.5.4-0907...v1.5.4-0908

  3. v1.5.4-09072026-09-07 · 2026-09-07 13:32 UTC
    查看更新说明

    ⚡ 优化 提取内容本机自动复制 #89

    Full Changelog: https://github.com/aa2013/ClipShare/compare/v1.5.4...1.5.4-0907

  4. v1.5.42026-09-02 · 2026-09-02 15:54 UTC
    查看更新说明

    🏷️ v1.5.4 - 2026-09-02

    注意,此版本不兼容旧版本(<1.5.0)设备连接

    通用

    --

    桌面端

    🛠️ 修复 桌面端 拖拽有可能卡死的问题

    Android

    ✨ 新增 移动端 接收文件后可选发起通知

    Windows

    --

    Linux

    --

    MacOS

    --

    iOS

    ✨ 新增 移动端 接收文件后可选发起通知

    Full Changelog: https://github.com/aa2013/ClipShare/compare/v1.5.3...v1.5.4

  5. v1.5.32026-08-21 · 2026-08-21 14:15 UTC
    查看更新说明

    注意,此版本不兼容旧版本(<1.5.0)设备连接

    通用

    🛠️ 修复 正则黑名单模式下即使未命中也会终止导致后续规则失效 #87

    桌面端

    ✨ 新增 历史弹窗粘贴触发行为设置,支持单击粘贴 #75 ✨ 新增 历史弹窗失焦隐藏时支持固定 #75 🛠️ 修复 历史弹窗搜索框无法输入文字,支持实时搜索
    🛠️ 修复 历史弹窗搜索词关闭后未清除、光标位于搜索栏时弹窗闪一下消失
    ⚡ 优化 弹窗失去焦点隐藏逻辑

    Android

    🛠️ 修复 保存图片在默认配置下失败的问题
    🛠️ 修复 截图复制可能存在的删除原始文件问题

    Windows

    🛠️ 修复 Windows 端持续提示使用位置权限的问题
    ⚡ 优化 Win+V 接管逻辑,仅在明确启用时生效

    Linux

    --

    MacOS

    --

    iOS

    --

    Full Changelog: https://github.com/aa2013/ClipShare/compare/v1.5.2...v1.5.3

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    ClipShare

    [!IMPORTANT] 项目正在进行大重构

    短期内将进行框架与结构方面的大规模重构:状态管理从 GetX 迁移到 Riverpod,数据库从 floor 迁移到 drift。重构期间除影响使用的 Bug 修复外,将暂停发布新版本,暂停接收 PR。

    ClipShare 是一个基于 Flutter 的跨平台剪贴板同步工具,支持文本、图片、文件、短信等内容在多设备间同步。

    项目起源

    该项目源于我想找一个 Android 平台上的剪贴板同步工具,但是基本上在 Andorid10+ 系统上都无法后台无感同步和公网环境下同步(本人是个懒人)于是决定自己来实现。

    iOS 版本虽已加入构建,但是还未经过充分测试

    技术现状与规划

    当前技术栈

    • Flutter + Dart(跨平台 UI 与业务层)
    • 平台原生能力(Android / Windows / Linux / macOS)
    • 状态管理:当前以 GetX 为主, 后续计划逐步将状态管理从 GetX 迁移到 Riverpod。

    核心能力

    • 多设备剪贴板同步(文本、图片、文件、短信)
    • 局域网设备发现与直连同步
    • 公网中转同步(Forward Server)
    • WebDAV / S3 对象存储中转
    • 历史记录管理(搜索、筛选、标签、统计、导出 Excel)
    • 文件拖拽发送与同步进度跟踪
    • 安全能力:应用密码、重新验证、加密密钥配置等
    • 规则管理 (当前为纯正则匹配,1.5.0 将会支持自定义脚本和内容提取)

    同步方案

    ClipShare 当前支持三类同步方案:

    • 内网:
      • 同网段设备自动发现后通过 Socket 通信同步。
    • 公网:
      • 中转服务:通过中转服务做数据转发。
      • WebDAV / S3 做存储中转,配合通知服务触发变更通知。

    注意:WebDAV/S3 存储中转 当前仍然为实验性功能

    中转程序项目仓库:ForwardServer

    Android 剪贴板监听说明

    Android 侧目前主要有两类监听路径:

    1. 系统日志方式:大多数系统可用,但在部分 ROM(如部分 OriginOS )可能拿不到可用日志。
    2. 系统隐藏 API 方式:通过 shell/root 进程反射调用隐藏 API,兼容性更广,但在深度魔改系统上仍可能受限。

    支持平台

    平台状态说明
    Android✅已支持
    Windows✅已支持
    Linux✅已支持
    macOS✅已支持
    iOS✅已支持,但未经过充分测试

    项目结构

    顶层目录

    assets/      # 静态资源(图片、内置 markdown、脚本等)
    docs/        # 文档资源
    go/          # Go 服务(通知服务)
    lib/         # Flutter 主体代码,通常都是在这个目录下
    scripts/     # 本地构建与打包脚本
    android/     # Android 项目原生工程,通常仅当需要编写原生代码混合开发时才会修改
    windows/     # Windows 项目原生工程,通常仅当需要编写原生代码混合开发时才会修改
    macos/       # Macos 项目原生工程,通常仅当需要编写原生代码混合开发时才会修改
    linux/       # Linux 项目原生工程,通常仅当需要编写原生代码混合开发时才会修改
    ios/         # iOS 项目原生工程,通常仅当需要编写原生代码混合开发时才会修改
    

    Flutter 核心目录(lib/app)

    lib/app/
      data/          # 数据模型、枚举、仓储、数据库实体与 DAO
      exceptions/    # 自定义异常
      handlers/      # 业务处理器(同步、存储、备份、Socket、引导等)
      listeners/     # 事件监听器(设备状态、历史变化、窗口事件等)
      modules/       # 页面模块(每个模块通常含 page/controller/bindings)
      routes/        # 路由定义
      services/      # 全局服务(配置、数据库、设备、托盘、传输、标签等)
      theme/         # 主题配置
      translations/  # 国际化翻译
      utils/         # 工具类与扩展
      widgets/       # 可复用 UI 组件
      utils/         # 工具类和一系列扩展方法,项目中所有常量都位于 `utils/Constants.dart`
    

    主要页面模块说明

    模块作用
    home_module主页面入口与导航
    history_module历史记录展示与操作
    device_module设备发现、配对、连接管理
    search_module历史检索与过滤
    settings_module应用配置页面
    statistics_module统计图表与数据分析
    sync_file_module文件同步相关页面
    authentication_module应用鉴权与密码保护
    log_module日志查看与问题排查
    clean_data_module数据清理
    db_editor_module数据库调试与 SQL 执行
    update_log_module更新日志展示
    about_module关于页
    user_guide_module首次使用引导
    qr_code_scanner_module二维码扫描页
    working_mode_selection_moduleAndroid 工作模式选择(如 Shizuku/Root/忽略)
    debug_module调试能力入口

    services 模块补充说明(文本化)

    services/ 是运行期核心支撑层,主要负责:

    • 配置读写(config_service.dart)
    • 数据库生命周期(db_service.dart)
    • 设备状态维护(device_service.dart)
    • 剪贴板与来源记录(clipboard_service.dart、clipboard_source_service.dart)
    • 同步与连接管理(transport/)
    • 托盘与窗口行为(tray_service.dart、window_service.dart、window_control_service.dart)
    • 文件同步管理(history_sync_progress_service.dart、syncing_file_progress_service.dart、pending_file_service.dart)

    国际化(i18n)说明

    项目 i18n 基于 TranslationKey 枚举统一管理翻译键,新增语言建议按以下步骤:

    1. 在 lib/app/data/enums/translation_key.dart 增加键。
    2. 在 lib/app/translations/ 下新增对应语言翻译文件。
    3. 在 app_translations.dart 注册语言映射。
    4. 在设置页语言选项中补充新语言。

    这样可以保证所有语言的键空间一致,便于做缺失检查和维护。

    开发环境要求

    • Flutter 3.41.9
    • Dart SDK >=3.8.0 <4.0.0
    • Android 构建需要 JDK 17
    • Linux 桌面构建需安装 GTK 等依赖(见 .github/workflows/build-linux.yml)

    本地运行

    flutter pub get
    flutter run
    

    脚本

    项目提供了相关脚本(位于 scripts/):

    构建与打包

    Windows, Linux, macOS 需要使用 Fastforge

    • Android APK:scripts/build_apk.bat
    • Windows Release(便携版):scripts/build_windows.bat
    • Windows EXE 打包(Fastforge):scripts/build_windows_exe.bat
    • Linux 打包(Fastforge, deb/appimage/rpm):scripts/build_linux.sh pack
    • macOS DMG 打包 (Fastforge):scripts/build_macos.sh
    • iOS 打包 (未签名):scripts/build_ios_nosign.sh

    GitHub Actions 也提供了对应平台流水线,见 .github/workflows/:

    • build-all.yml
    • build-android.yml
    • build-windows.yml
    • build-linux.yml
    • build-macos.yml
    • build-ios-nosign.yml
    • build-notify-docker-image.yml

    代码生成

    • 数据库代码生成:scripts/db_gen.bat
    • 应用图标生成:scripts/icon_gen.bat

    数据库代码生成

    本项目基于 sqlite, 使用 floor 框架

    后续也可能迁移数据库框架

    步骤:

    • 若需新增表
      • 在 lib/app/data/repository/entity/tables 新增实体类,使用注解标记
      • 然后在 lib/app/data/repository/dao 新增Dao接口,使用注解标记
      • 然后在 lib/app/services/db_service.dart 中的 tables 添加实体类
      • 然后在 lib/app/services/db_service.dart 中的 _AppDb 添加对应的 Dao 的 getter 字段
    • 修改SQL
      • 修改对应 Dao 中的接口上的 SQL
    • 修改版本号
      • 若已修改完成且准备发布版本或者pr,请修改 lib/app/data/repository/db_service.dart 中的 _AppDb 上的 @Database 注解中的版本号,通常递增即可
      • 然后在 lib/app/data/repository/db_service.dart 中的 init 方法增加版本迁移方法,注意 DDL 要兼容降级再升级的情况,如增加 IF NOT EXISTS 语法或判断字段存在性
    • 最后 cd scripts 进入脚本目录,执行 db_gen.bat 进行代码生成即可

    可选:自建通知服务(对象存储中转配套)

    仓库内提供 Go 实现的通知服务:go/notification。

    • 默认监听端口:8083
    • Docker Compose 示例:go/notification/docker-compose.yml

    启动(本地 Go):

    cd go/notification
    go run . -port 8083
    

    许可证

    本项目使用 GPL-3.0 许可证。