Project Icon

openmtp

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

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

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 文件传输

键盘快捷键

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

从源代码构建

要求: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

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

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

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号