写了个 macOS 原生 Android 文件传输工具 SwiftMTP,求测试反馈 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wang93wei
V2EX    macOS

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

  •  
  •   wang93wei 1 月 22 日 2338 次点击
    这是一个创建于 34 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    https://github.com/wang93wei/SwiftMTP/releases/tag/v1.0.2
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5344 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 07:37 PVG 15:37 LAX 23:37 JFK 02:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86