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

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

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

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多