openmtp

openmtp

macOS专用的高速Android文件传输应用

OpenMTP是专为macOS开发的Android文件传输应用,解决了传统MTP传输的诸多限制。支持大文件传输、拖放操作和多视图模式,采用Kalam内核实现30-120MB/s的高速传输。无需WiFi或ADB,即插即用,安全透明,为macOS用户提供流畅的Android设备文件管理体验。

OpenMTP文件传输macOSAndroidMTPGithub开源项目

OpenMTP | macOS 安卓文件传输工具

简介

macOS 上的高级安卓文件传输应用。

在 macOS 和安卓或其他 MTP 设备之间传输文件一直是一场噩梦。市面上有一些 MTP 文件传输应用,但它们要么价格昂贵,要么用户界面和体验很差。谷歌官方为 macOS 提供的"Android File Transfer"应用存在诸多问题和限制,比如无法传输大于 4GB 的文件、频繁断开连接、无法重命名安卓/MTP 设备上的文件夹或文件等。其他大多数在线应用则使用 WiFi 或 ADB 协议传输文件,这是一个极其耗时的过程。

无数次搜索寻找解决这些问题的应用却一无所获,这让我倍感焦虑。于是,我决定自己开发一个应用,帮助我们实现从 macOS 到安卓/MTP 设备的流畅无忧的文件传输过程。本着回馈社区的初衷,我们都可以在今后免费使用这个应用。

特性

  • 安全、透明、开源
  • 通过 USB 即插即用。无需繁琐设置,连接简单快速
  • 可选择内部存储或 SD 卡
  • 支持传输多个大于 4GB 的文件
  • 深色模式
  • 支持拖放操作
  • 本地电脑和安卓设备的分屏视图
  • 可选择网格或列表视图
  • 使用键盘快捷键浏览文件
  • 不收集任何个人身份信息

Kalam 内核

OpenMTP 3.0 采用了全新的 MTP 内核,该内核是从零开始编写的。它在中低端设备上可实现 30 到 40 MB/s 的文件复制速度,在高端设备上可达到 100 到 120 MB/s。这个全新强大的 MTP 内核以 A. P. J. Abdul Kalam 博士 的名字命名。

欢迎查看我为构建 Kalam 内核而编写的 Go 包:github.com/ganeshrvel/go-mtpx。欢迎提交 PR。

系统要求和支持

  • 为了支持 Big Sur 以下的 macOS 版本,每次更新时都需要在旧版 macOS 机器上编译 Kalam 内核,这在实际操作中非常困难
  • 只有最新的 3 个 macOS 版本会收到 Kalam 内核更新,包括新设备支持、修复和稳定性改进。macOS Big Sur (11.0) 及以上版本将收到上述更新
  • 我们现已正式停止对 macOS 10.13 (OS X El High Sierra) 及更低版本的 Kalam 内核支持。这些过时机器上只能继续使用"旧版"MTP 模式
  • 我们将继续为 IntelARM64 机器发布更新

安装

# 新版本: brew install openmtp --cask # 旧版本: brew cask install openmtp

截图

OpenMTP 文件浏览器

OpenMTP 文件传输

键盘快捷键

命令键盘快捷键
删除<kbd>backspace</kbd>
新建文件夹<kbd>command (⌘)</kbd>+<kbd>n</kbd>
复制<kbd>command (⌘)</kbd>+<kbd>c</kbd>
复制到队列<kbd>command (⌘)</kbd>+<kbd>shift</kbd>+<kbd>c</kbd>
粘贴<kbd>command (⌘)</kbd>+<kbd>v</kbd>
刷新<kbd>command (⌘)</kbd> +<kbd>r</kbd>
返回上级文件夹<kbd>command (⌘)</kbd>+<kbd>b</kbd>
全选<kbd>command (⌘)</kbd>+<kbd>a</kbd>
重命名<kbd>command (⌘)</kbd>+<kbd>d</kbd>
切换标签<kbd>command(⌘)</kbd>+<kbd>1</kbd>
打开<kbd>enter</kbd>
向左导航<kbd>left</kbd>
向右导航<kbd>right</kbd>
向上导航<kbd>up</kbd>
向下导航<kbd>down</kbd>
向前选择多个项目 (网格视图)<kbd>shift</kbd>+<kbd>left</kbd>
向后选择多个项目 (网格视图)<kbd>shift</kbd>+<kbd>right</kbd>
向前选择多个项目 (列表视图)<kbd>shift</kbd>+<kbd>up</kbd>
向后选择多个项目 (列表视图)<kbd>shift</kbd>+<kbd>down</kbd>
选择多个项目 (使用鼠标)<kbd>command (⌘)</kbd>+<kbd>click</kbd><kbd>shift</kbd>+<kbd>click</kbd>

从源代码构建

要求:Node.js v16GitYarn 包管理器

克隆

$ git clone https://github.com/ganeshrvel/openmtp.git $ cd openmtp # 安装 yarn npm install -g yarn # 安装 sentry cli npm -g i @sentry/cli
$ yarn

运行

新克隆的项目可能会抛出"未定义状态"错误。运行以下命令一次以解决该问题。

# 对于 Mac 和 Linux $ UPGRADE_EXTENSIONS=1 npm run dev # 对于 Windows $ set UPGRADE_EXTENSIONS=1 && npm run dev
# 开发环境 $ yarn dev # 预生产环境 $ yarn start

调试已打包的应用

# 在终端运行 $ "/path/to/OpenMTP.app/Contents/MacOS/OpenMTP" --remote-debugging-port=6363
  • 打开 Chromium 浏览器
  • 在地址栏输入 "about://inpsect"
  • 添加新连接 localhost:6363
  • 在端口 6363 检查 OpenMTP

使用 CI/CD 发布:

  • CodeMagic.io
    • 创建新应用(选择其他 -> 输入 Electron)
    • 环境变量:
      • APPLEID: <Apple 开发者账号用户名>
      • APPLE_APP_SPECIFIC_PASSWORD: <应用特定密码>
        • 登录你的 Apple 账号
        • 前往 登录和安全 > 应用特定密码
        • 点击 生成密码...,输入密码标签并点击 创建
        • 复制显示的 应用特定密码
      • APPLE_TEAM_ID: <Apple 团队 ID>
        • 要获取团队 ID,请前往 Apple 开发者账号
        • 然后点击"会员资格详情",你将在那里找到你的团队 ID。
      • SENTRY_URL: https://sentry.io/
      • SENTRY_ORG: <Sentry 组织名称>
      • SENTRY_PROJECT: <Sentry 项目>
      • SENTRY_TOKEN_ID: <Sentry 认证令牌>
        • 在这里找到:认证令牌
        • 作用域:event:admin, event:read, member:read, org:read, project:read, project:releases, team:read
      • GITHUB_TOKEN: 个人访问令牌
      • CSC_LINK:
        • 钥匙串访问 -> 左侧菜单中的 默认钥匙串 -> 登录 -> 我的证书
        • 在顶部搜索栏搜索 Developer ID Application
        • 在顶部搜索栏搜索 Developer ID Application
        • 展开 Developer ID Application: <用户名> (XXXYYYZZZ)
        • 检查私钥名称是否匹配:Mac Developer ID Application: <用户名>
          • 否则重命名私钥(右键点击 -> 获取信息)为 Mac Developer ID Application: <用户名>
          • 关闭窗口
        • 右键点击私钥 -> Mac Developer ID Application: <用户名>
        • 导出 Mac Developer ID Application: <用户名>
        • 文件名:CERTIFICATE_PRIVATE_KEY.p12
        • 输入密码。这是 CSC_KEY_PASSWORD,请记下
        • 运行(如果你使用 fig 或 ohmyzsh,此步骤可能不起作用,请使用原始终端):
          • base64 -i CERTIFICATE_PRIVATE_KEY.p12 -o CERTIFICATE_PRIVATE_KEY.txt
        • 复制 CERTIFICATE_PRIVATE_KEY.txt 文件的全部内容
        • 将内容粘贴为 CSC_LINK 字段的值
      • CSC_KEY_PASSWORD 是上一步中的密码
      • CODEMAGIC_AUTH_TOKEN_ID: <CodeMagic API 令牌>
      • CODEMAGIC_INTEL_X64_WORKFLOW_ID_PROD: <生产环境 codeMagic 工作流 ID>
        • codemagic.yaml 中找到相关的工作流 ID(通常是 macos-intel-x64-build-prod
      • CODEMAGIC_INTEL_X64_WORKFLOW_ID_DEV: <开发环境 codeMagic 工作流 ID>
        • codemagic.yaml 中找到相关的工作流 ID(通常是 macos-intel-x64-build-dev
      • PUBLISH_PROD_REPOSITORY: <用于发布生产应用的仓库>
      • PUBLISH_DEV_REPOSITORY: <用于发布开发应用的仓库>
      • CODEMAGIC_PUBLISH_PROJECT_ID: <Codemagic intel 项目 ID>
      • PUBLISH_EMAIL: 接收发布更新的电子邮件地址
      • 参考:

本地打包和发布

设置 代码签名 以构建、本地打包和发布应用。

macOS 应用公证(非 macOS 构建请跳过此部分)

  • sample.env 文件重命名为 .env
  • .env 文件中更新 APPLEIDAPPLE_APP_SPECIFIC_PASSWORD
  • 登录你的 Apple 账号
  • 前往 登录和安全 > 应用特定密码
  • 点击 生成密码...,输入密码标签并点击 创建
  • 复制显示的 应用特定密码
  • 运行
security add-generic-password -a "<apple-开发者账号用户名>" -w <应用特定密码> -s "APPLE_APP_SPECIFIC_PASSWORD"

Sentry

npm install -g @sentry/wizard sentry-wizard --integration electron # 上传调试信息 # 每次升级electron.js版本时运行: node sentry-symbols.js sentry-cli login

打包 说明:https://www.electron.build/code-signing

$ export GH_TOKEN="<github token>"
# 针对本地平台 $ yarn package # 针对多个平台 $ yarn package-all

技术特性

  • 使用Electron v17和React v18构建
  • 使用Loadables、动态reducer注入、选择器进行代码拆分和性能优化
  • 热模块重载(HMR)以获得即时反馈
  • 内置错误日志记录和配置文件/设置管理
  • 行业标准状态管理
  • JSS、SASS/SCSS样式
  • 分配的端口:4642

配置

  • _config/env/env.dev.js_和_config/env/env.prod.js_包含应用程序的端口号。
  • _config/dev-app-update.yml_文件包含_electron-updater_所需的GitHub仓库变量。
  • _config/google-analytics-key.js_文件包含Google Analytics跟踪ID。
  • _package.json_的build.publish对象包含发布打包应用程序的值。
  • _app/constants_文件夹包含应用程序所需的所有常量。

调试

调试指南

https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/400

从主进程分发redux操作

https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/118

https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/108

VM112:2 Uncaught TypeError: Cannot read property 'state' of undefined 错误

# 对于Mac和Linux $ UPGRADE_EXTENSIONS=1 npm run dev # 对于Windows $ set UPGRADE_EXTENSIONS=1 && npm run dev

故障排除

您的设备未被识别

node-mac-permissions抛出Speech framework is not compatible with macOS < 10.15

  • 在macOS <= 10.14.x (mojave)上,yarn install将抛出npm-rebuild错误
  • 要在macOS mojave上"测试"或"调试"应用程序:
    • package.json中移除node-mac-permissions依赖
    • 在文件webpack/config.base.js中的default.plugins添加ignorePlugin行
      • new webpack.IgnorePlugin({ resourceRegExp: /^(node-mac-permissions)$/u }),
    • 警告:不要将这些更改提交到上游!!
  • NODE_MAC_PERMISSIONS_MIN_OS常量定义了显示macOS使用访问权限弹出窗口所需的最低操作系统版本
  • 对于分发,请确保在至少10.15(Catalina)的机器上构建应用程序

https://stackoverflow.com/questions/58358449/notarizing-electron-apps-throws-you-must-first-sign-the-relevant-contracts-on

尝试连接三星设备时应用程序变为空白

公证Electron应用程序时抛出 - "You must first sign the relevant contracts online. (1048)" 错误

https://stackoverflow.com/questions/58358449/notarizing-electron-apps-throws-you-must-first-sign-the-relevant-contracts-on

更多仓库

致谢

贡献

如果您有兴趣修复问题并直接贡献代码,请参阅指南

支持OpenMTP

帮助我保持应用程序对所有人免费开放。

联系方式

如有任何问题,请随时通过ganeshrvel@outlook.com与我联系。

许可证

OpenMTP | Android File Transfer for macOS 根据MIT许可证发布。

版权所有 © 2018-至今 Ganesh Rathinavel

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多