wang93wei
V2EX  ›  macOS

写了个 macOS 原生 Android 文件传输工具 SwiftMTP,求测试反馈 👋

  •  
  •   wang93wei · Jan 22 · 3756 views
    This topic created in 292 days ago, the information mentioned may be changed or developed.

    最近因为要在 Mac 和 Android 手机之间传文件,发现目前可以用的工具要么是开源且丑的 whoozle/android-file-transfer-linux ,要么是好久没更新的 Google 开发的 Android File Transfer 。

    为什么写这个?

    • Android File Transfer 不支持最新的 ARM 版本,且仍然使用 Intel 转译,体验很差
    • whoozle/android-file-transfer-linux 虽然开源,但界面简陋,而且需要自行编译 ARM 版本,对普通用户很不友好

    于是决定自己撸一个开源工具——SwiftMTP 。折腾不到一个月终于能用了 🎉

    关于我(先坦白)

    我完全不会 Swift 和 GO 的开发,所以目前代码都是 AI 辅助生成的。正因为如此,可能存在 UI 样式异常或其他 bug 。如果你在使用过程中遇到任何问题,请务必及时反馈,我会尽力修复!

    主要功能

    • 自动检测连接的 Android 设备( MTP 模式)
    • 文件浏览,支持文件夹导航
    • 文件下载/上传,支持拖放
    • 支持大文件传输(>4GB )
    • 批量选择和下载
    • 多语言支持(简中、英语、日语、韩语、俄语、法语、德语)
    • 显示设备存储空间

    技术栈

    • 前端:SwiftUI ( MVVM 架构)
    • 后端:Go 1.22 + go-mtpx + libusb-1.0
    • 桥接:CGO ( Swift ↔ C ↔ Go )

    目前已知限制

    • 仅支持 ARM 版本( Apple 芯片)
    • 要求系统版本在 macOS 26 或更高
    • 仅支持单个设备
    • 暂不支持文件夹上传(单文件上传)
    • 传输速度受 MTP 协议限制
    • UI 可能存在样式异常(因为我不会 Swift 😅)

    下载方式

    GitHub: https://github.com/wang93wei/SwiftMTP

    可以从源码构建,或者直接下载安装包。

    注意: 因为没有苹果开发者签名,所以可能需要其他方式方可使用:

    如果看到 "SwiftMTP can't be opened because it is from an unidentified developer",尝试以下方法:

    1. 右键点击应用 → 选择「打开」
    2. 系统设置 → 隐私与安全性 → 允许 SwiftMTP
    3. 或在终端运行:xattr -cr /Applications/SwiftMTP.app

    求反馈

    • 你的设备能否正常检测?
    • 传输速度如何?
    • UI 有没有样式问题?
    • 有没有遇到什么 bug ?
    • 有什么功能建议?

    项目刚起步,代码写得可能不够优雅,欢迎提 issue 或 PR !

    效果图

    25 replies  •  2026-05-13 09:17:02 +08:00
    hronro
    hronro
    Jan 22❤️1
    1
    我在用 OpenMTP ,用的 Electron 技术栈写的,感觉也还行。当然如果有原生 App 并且成熟稳定的话,我肯定是更愿意用原生 App 的。
    X1aoma
    X1aoma
    Jan 22
    2
    蹲后续
    huig
    huig
    Jan 22
    3
    我也用的 openMTP 另外我觉得这个 UI 左边设备栏是否可以改到更小的位置,不会有那么多设备的。
    sherlockGou
    4
    可以考虑一下分栏,比如一边设备的文件,一边是本机的文件,这样还能直接拖拽来拷贝。
    sherlockGou
    5
    @sherlockGou 然后匹配更多的文件图标。
    HiHuan
    HiHuan
    Jan 22
    6
    跟 localsend 有啥区别吗?
    steve687
    steve687
    Jan 22
    7
    虽然但是泼盆冷水,推荐一个 blip
    xy19009188
    8
    我一直用 localsend
    MoozLee
    MoozLee
    Jan 22
    9
    同样一直用的 openmtp
    94nb
    94nb
    Jan 22
    10
    @hronro OpenMTP+1 ,主要用来给 switch 传游戏
    kasusa
    kasusa
    Jan 22
    11
    MTP 好像是微软默认支持 ,然后 mac 不支持的那种?
    mac 啊。。。。
    goldenlove
    12
    OpenMTP +1 。
    但如果只是传小文件目前用 Blip 无线更方便。
    alienjunx
    alienjunx
    Jan 22
    13
    请问为什么要用到 go
    nuII
    nuII
    Jan 23
    14
    star 支持!虽然评论里推荐了很多局域网传输的工具,但是在大文件的时候直接有线连接传输才是最快的,wifi 可没有 10Gpbs 的速度。传一些 raw 格式视频、游戏包的情况下还是很需要的。

    文件不大的情况下多端传输现在是用 blip 来代替 localsend 了,自动检测局域网,优先打洞,不行再中继,比 localsend 的纯局域网要好一点。
    SayHelloHi
    15
    Android File Transfer +1

    主要给 Switch 传送游戏
    dantifer
    dantifer
    Jan 24
    16
    @hronro 是啊,还想问跟 openmtp 有啥区别呢
    cnachen
    cnachen
    Jan 24 via Android
    17
    我一直用 Lakr233/Axchange
    wang93wei
    wang93wei
    OP
    Jan 24
    18
    @alienjunx 不会 Swift ,C 之前大学学的都忘了,再加上得研究 MTP 协议,就找一个现成且开源的 go 后端作为文件传输的基础。
    wang93wei
    wang93wei
    OP
    Jan 24
    19
    @nuII 感谢你的支持。

    确实,对于大文件,有线 MTP 传输的速度优势是无线传输无法比拟的,按场景选择工具的策略很合理。

    我跟人比较喜欢用线连接电脑的感觉,所以才开发了这么个工具。
    wang93wei
    wang93wei
    OP
    Jan 24
    20
    @sherlockGou #4 好的,感谢您的建议。
    wang93wei
    wang93wei
    OP
    Jan 24
    21
    @kasusa 对,mac 上确实不太行,得用专门的工具。
    wang93wei
    wang93wei
    OP
    Jan 24
    22
    @cnachen 头一次看到这个,不同的技术路线。
    yangyp2
    yangyp2
    Jan 26
    23
    下载使用了下,发现从外接硬盘上拖过去,没法传输
    wang93wei
    wang93wei
    OP
    Feb 14
    24
    @yangyp2 修复了,之前限制太严格了,现在去掉了外置硬盘的限制。

    https://github.com/wang93wei/SwiftMTP/releases/tag/v1.0.2
    Bluesxx
    Bluesxx
    May 13
    25
    也有其他大佬撸了一个 https://neighbor-z.github.io/swiftmtp-website
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4368 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 06:57 · PVG 14:57 · LAX 22:57 · JFK 01:57
    ♥ Do have faith in what you're doing.