V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wang93wei
V2EX  ›  macOS

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

  •  
  •   wang93wei · 1 天前 · 883 次点击

    最近因为要在 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 !

    效果图

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

    文件不大的情况下多端传输现在是用 blip 来代替 localsend 了,自动检测局域网,优先打洞,不行再中继,比 localsend 的纯局域网要好一点。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5658 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:16 · PVG 10:16 · LAX 18:16 · JFK 21:16
    ♥ Do have faith in what you're doing.