V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
wang93wei
V2EX  ›  macOS

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

  •  
  •   wang93wei · Jan 22 · 2699 views
    This topic created in 96 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 !

    效果图

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

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

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

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

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

    https://github.com/wang93wei/SwiftMTP/releases/tag/v1.0.2
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1242 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 17:40 · PVG 01:40 · LAX 10:40 · JFK 13:40
    ♥ Do have faith in what you're doing.