返回目录
开源项目其他开源工具类新手

GitHub - ganeshrvel/openmtp: OpenMTP - Advanced Android File Transfer Application for macOS

OpenMTP | Android File Transfer for macOS - Author: Ganesh Rathinavel - License: MIT - System Requirements: macOS 11.0 (Big Sur) or higher - Website URL: https://openmtp.ganeshrvel.com - Repo URL: https://github.com/ganeshrvel/openmtp - Contacts:

0 次阅读2026/09/14 发布
GitHub - ganeshrvel/openmtp: OpenMTP  - Advanced Android File Transfer Application for macOS 来源图片

社区作者 · zZz

它解决什么问题

OpenMTP | Android File Transfer for macOS

  • Author: Ganesh Rathinavel
  • License: MIT
  • System Requirements: macOS 11.0 (Big Sur) or higher
  • Website URL: https://openmtp.ganeshrvel.com
  • Repo URL: https://github.com/ganeshrvel/openmtp

Introduction

Advanced Android File Transfer Application for macOS.

Transferring files between macOS and Android or any other MTP devices has always been a nightmare. There are a few File Transfer MTP apps that are available online but most of them are either too expensive or come with bad UI/UX.

The official "Android File Transfer" app for macOS from Google comes with bugs, innumerable limitations, some of which include - not being able to transfer files larger than 4GB, frequent disconnections, and being unable to rename the folders or files on the Android/MTP devices.

Most of the other apps available online use either WiFi or ADB protocol to transfer the files, which is an extremely time-consuming process.

Countless searches to find an app to solve these problems and failing to find one made me restless.

So, I took the leap and decided to create an app for us that could help us have a smooth and hassle-free file transfer process from macOS to Android/MTP devices.

Created with the objective of giving back to the community, we can all use this app for free in this lifetime.

Features

  • Safe, Transparent and Open-Source
  • Plug and Play via USB. No hassles, easy and instant connection.
  • Select between Internal Memory and SD Card
  • Transfer multiple files which are larger than 4GB
  • Dark mode
  • Drag-and-drop support
  • Split pane views for both Local Computer and Android device
  • Choose between Grid and List view.
  • Use Keyboard Shortcuts to navigate through your files.
  • No collection of personally identifiable information.

Kalam Kernel

OpenMTP 3.0 features a new MTP kernel and it was written from scratch. It promises a file copy speed of 30 to 40 MB/s on low and mid-range devices and 100 to 120 MB/s on higher end devices. The all-new and powerful MTP kernel is named after Dr. A. P. J. Abdul Kalam

Do check out the Go package which I've written to build Kalam Kernel: github.com/ganeshrvel/go-mtpx . Feel free to raise PRs.

System Requirements and Support

  • To support macOS version below Big Sur the Kalam kernel needs to be compiled on an older macOS machine every time there is an update, which is practically very difficult
  • Only the latest 3 versions of macOS will receive the Kalam Kernel updates, which include new device support, fixes, and stability improvements. macOS Big Sur (11.0) or above will receive the above-mentioned updates
  • We have now officially retired the support for Kalam Kernel on macOS 10.13 (OS X High Sierra) and lower. Only the "Legacy" MTP mode will continue working on these outdated machines.
  • We will continue releasing the updates for both Intel and ARM64 machines

Installation

  • Download the Mac Apple Silicon version
  • Download the Mac Intel version
  • Using Homebrew Cask

newer versions:

命令
brew install openmtp --cask

older versions:

命令
brew cask install openmtp
  • Find the latest dmg file from GitHub Releases

Screengrabs

Keyboard Shortcuts

Command Keyboard Shortcut

Delete backspace

New Folder command (⌘) + n

Copy command (⌘) + c

Copy to Queue command (⌘) + shift + c

Paste command (⌘) + v

Refresh command (⌘) + r

Folder Up command (⌘) + b

Select All command (⌘) + a

Rename command (⌘) + d

Switch Tab command(⌘) + 1

Open enter

Navigate Left left

Navigate Right right

Navigate Up up

Navigate Down down

Select Multiple Items Forward (in Grid View) shift + left

Select Multiple Items Backward (in Grid View) shift + right

Select Multiple Items Forward (in List View) shift + up

Select Multiple Items Backward (in List View) shift + down

Select Multiple Items (with mouse) command (⌘) + click or shift + click

Building from Source

Requirements: Node.js v16 , Git and Yarn package manager

Clone

命令
git clone https://github.com/ganeshrvel/openmtp.git
命令
cd openmtp

install yarn

命令
npm install -g yarn

install sentry cli

命令
npm -g i @sentry/cli
命令
yarn

Run

A fresh clone might throw undefined state error. Run the following commands once to fix the issue.

For Mac and Linux

命令
UPGRADE_EXTENSIONS=1 npm run dev

For Windows

命令
set UPGRADE_EXTENSIONS=1 && npm run dev

Development

命令
yarn dev

Pre-production

命令
yarn start

Debugging a Packaged App

In the terminal, run

$ " /path/to/OpenMTP.app/Contents/MacOS/OpenMTP " --remote-debugging-port=6363

  • Open a Chromium browser
  • Input "about://inspect" into the URL bar
  • Add a new connection localhost:6363
  • Inspect OpenMTP at port 6363

Publishing using CI/CD:

  • CodeMagic.io
  • Create a new App (Choose others -> Enter Electron)
  • Environment variables:
  • APPLEID : <Apple developer account username>
  • APPLE_APP_SPECIFIC_PASSWORD : <App-Specific Password>
  • Log into your Apple Account
可复制命令
Go to Sign-In and Security > App-Specific Passwords
  • Click on Generate Password... , enter a password label and click Create
  • Copy the displayed app-specific-password
  • APPLE_TEAM_ID : <Apple Team ID>
  • To get Team ID, go to your Apple Developer Account
  • Then click on "Membership details", and there you will find your Team ID.
  • SENTRY_URL : https://sentry.io/
  • SENTRY_ORG : <Sentry Organization Name>
  • SENTRY_PROJECT : <Sentry Project>
  • SENTRY_TOKEN_ID : <Sentry Auth Token>
  • Find it from here: Auth Tokens
  • Scopes: event:admin, event:read, member:read, org:read, project:read, project:releases, team:read
  • GITHUB_TOKEN : Personal access token
  • There are two options available:
  • Fine-grained personal access tokens
  • https://github.com/settings/tokens?type=beta
  • Permissions: Contents - (Read and Write access to code)
  • Personal access tokens (classic)
  • https://github.com/settings/tokens
  • Scopes: admin:gpg_key, admin:public_key, repo, user, workflow
  • CSC_LINK :
  • Keychain -> Default Keychains menu in the left -> Login -> My Certificates
  • Search for Developer ID Application in the top search bar
  • If there are no results for the Developer ID Application , for the organization, create one from here: Apple Developer Certificates
  • Follow these steps to get the Apple Developer certificate installed on the local machine Obtaining-an-Apple-Developer-ID-Certificate-for-macOS-Provisioning
  • Search for Developer ID Application in the top search bar
  • Expand Developer ID Application: <User Name> (XXXYYYZZZ)
  • See if the private key's name matches this: Mac Developer ID Application: <User Name>
  • Otherwise, rename the private key as (right click -> get info) Mac Developer ID Application: <User Name>
  • Close the window
  • Right-click on the private key -> Mac Developer ID Application: <User Name>
可复制命令
Export Mac Developer ID Application: <User Name>
  • File name: CERTIFICATE_PRIVATE_KEY.p12
  • Enter Password. This is the CSC_KEY_PASSWORD , note this down
  • Run (this step doesn't work if you are using fig or ohmyzsh, use raw terminal):
  • base64 -i CERTIFICATE_PRIVATE_KEY.p12 -o CERTIFICATE_PRIVATE_KEY.txt
  • Copy the whole content of the file CERTIFICATE_PRIVATE_KEY.txt
  • Paste the content as the value for the field CSC_LINK
  • CSC_KEY_PASSWORD is the password from the above step
  • CODEMAGIC_AUTH_TOKEN_ID : <CodeMagic API Token>
  • Find it from here: Sidebar -> Teams -> Personal Account -> Integrations -> Codemagic API
  • CODEMAGIC_INTEL_X64_WORKFLOW_ID_PROD : <Prod Codemagic workflow id>
  • Find the relevant workflow id from codemagic.yaml , (mostly macos-intel-x64-build-prod )
  • CODEMAGIC_INTEL_X64_WORKFLOW_ID_DEV : <Dev Codemagic workflow id>
  • Find the relevant workflow id from codemagic.yaml , (mostly macos-intel-x64-build-dev )
  • PUBLISH_PROD_REPOSITORY : <Repository to publish the production app>
  • PUBLISH_DEV_REPOSITORY : <Repository to publish the dev app>
  • CODEMAGIC_PUBLISH_PROJECT_ID : <Codemagic intel project id>
  • PUBLISH_EMAIL : Email address to receive the updates on publish
  • References:
  • https://www.electron.build/code-signing.html
  • https://docs.codemagic.io/yaml-code-signing/signing-macos/#saving-the-api-key-to-environment-variables

Packaging (locally) and Publishing

命令
Set up the code signing to build, package (locally) and publish the app.

App Notarization for macOS (skip this section for non-macOS builds)

  • Rename sample.env file as .env
  • To update APPLEID and APPLE_APP_SPECIFIC_PASSWORD in the .env file
  • Log into your Apple Account
可复制命令
Go to Sign-In and Security > App-Specific Passwords
  • Click on Generate Password... , enter a password label and click Create
  • Copy the displayed app-specific-password
  • Run

security add-generic-password -a " <apple-developer-account-username> " -w < app-specific-password > -s " APPLE_APP_SPECIFIC_PASSWORD "

  • Log into your Apple App Store Connect Account and accept the presented terms and conditions
  • The statuses shall turn Active

Sentry

  • Auth Tokens Settings page: https://sentry.io/settings/account/api/auth-tokens/
命令
npm install -g @sentry/wizard

sentry-wizard --integration electron

Upload Debug Information

Every time the electron.js version is upgraded, run:

node sentry-symbols.js

sentry-cli login

Packaging Instructions: https://www.electron.build/code-signing

命令
export GH_TOKEN= " <github token> "

For local platform

命令
yarn package

For multiple platforms

命令
yarn package-all

Technical Features

  • Built using Electron v17 and React v18
  • Loadables, Dynamic Reducer Injection, Selectors for code splitting and performance optimization
  • Hot module reload (HMR) for instant feedback
  • Built-in error logging and profile/settings management
  • Industry standard state management
  • JSS, SASS/SCSS styling
  • Port assigned: 4642

Configurations

  • config/env/env.dev.js and config/env/env.prod.js contain the PORT number of the app.
  • config/dev-app-update.yml file holds the GitHub repo variables required by electron-updater .
  • config/google-analytics-key.js file contains the Google Analytics Tracking ID.
  • package.json build.publish object holds the values for publishing the packaged application.
  • app/constants folder contains all the constants required by the app.

Debugging

Debugging Guide

electron-react-boilerplate/electron-react-boilerplate#400

Dispatching redux actions from the main process

electron-react-boilerplate/electron-react-boilerplate#118

electron-react-boilerplate/electron-react-boilerplate#108

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

For Mac and Linux

命令
UPGRADE_EXTENSIONS=1 npm run dev

For Windows

命令
set UPGRADE_EXTENSIONS=1 && npm run dev

Troubleshooting

Your device is not recognized

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

  • On macOS <= 10.14.x (Mojave) the yarn install will throw a npm-rebuild error
  • To "test" or "debug" the app on macOS Mojave:
  • remove the node-mac-permissions dependency from package.json
  • Add the ignorePlugin line to default.plugins in the file webpack/config.base.js
  • new webpack.IgnorePlugin({ resourceRegExp: /^(node-mac-permissions)$/u }),
  • WARNING: DO NOT commit these changes to the upstream!!
  • The NODE_MAC_PERMISSIONS_MIN_OS constant defines the minimum OS version that is required to show the macOS usage access permission pop-up
  • For distribution, make sure to build the app on a machine which is at least 10.15 (Catalina)

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

  • Raise an issue if your device is undetected: https://github.com/ganeshrvel/openmtp/issues/new?template=contribute.md

The app goes blank while trying to connect a Samsung device

  • Uninstall Samsung Smart Switch if installed: https://farazfazli.medium.com/how-i-reverse-engineered-keis-and-sidesync-and-fixed-mtp-8949acbb1c29 , #212 .

Notarizing Electron apps throws - “You must first sign the relevant contracts online. (1048)” error

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

More repos

  • npm: electron-root-path
  • Electron React Redux Advanced Boilerplate
  • Tutorial Series by Ganesh Rathinavel

Credits

- Special thanks to CodeMagic and Kevin Suhajda for sponsoring their CI/CD VMs, thus making the app releases more streamlined and much easier now. 🎊🎊 Do check out their products section for more.

- Special shoutout to @CodyJung for adding the Fujifilm and Garmin device support. 🔥🔥

- Thanks to Ms Ayushi Bothra for contributing to the documentation and pages.

- App logo was contributed by Shubhendu Mitra . Make sure to check out more of his work on Behance .

- Thanks to Vladimir Menshakov for android-file-transfer-linux (the legacy MTP Kernel)

- Shoutout to @yennsarah , @h0tk3y , @riginoommen , @AjithKumarvm , @kiranshaji555 , Dick Cowan, Kjell Dankert, Thorolf E.R. Weißhuhn and to all other community members who helped me test the application.

- This app was built upon https://github.com/ganeshrvel/electron-react-redux-advanced-boilerplate , which is a heavily modified fork of https://github.com/electron-react-boilerplate/electron-react-boilerplate .

- The icons used in the app were made by flaticon , good-ware and kiranshastry which are licensed under CC 3.0 BY .

- The "no image found" icon was made by Phonlaphat Thongsriphong .

Contribute

If you are interested in fixing issues and contributing directly to the code base, please see the guidelines .

Support OpenMTP

Help me keep the app FREE and open for all.

  • Support us via PayPal: paypal.me/ganeshrvel
  • Buy Me A Coffee (UPI, PayPal, Credit/Debit Cards, Internet Banking): buymeacoffee.com/ganeshrvel

Contacts

Please feel free to contact me at [email protected]

License

OpenMTP | Android File Transfer for macOS is released under the MIT License .

Copyright © 2018-Present Ganesh Rathinavel

— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。

安装 / 开始使用

Introduction Advanced Android File Transfer Application for macOS. Transferring files between macOS and Android or any other MTP devices has always been a nightmare.

There are a few File Transfer MTP apps that are available online but most of them are either too expensive or come with bad UI/UX.

The official "Android File Transfer" app for macOS from Google comes with bugs, innumerable limitations, some of which include - not being able to transfer files larger than 4GB, frequent disconnections, and being unable to rename the folders or files on the Android/MTP devices.

Most of the other apps available online use either WiFi or ADB protocol to transfer the files, which is an extremely time-consuming process. Countless searches to find an app to solve these problems and failing to find one made me restless.

So, I took the leap and decided to create an app for us that could help us have a smooth and hassle-free file transfer process from macOS to Android/MTP devices.

Created with the objective of giving back to the community, we can all use this app for free in this lifetime. Features

Kalam Kernel OpenMTP 3.0 features a new MTP kernel and it was written from scratch. It promises a file copy speed of 30 to 40 MB/s on low and mid-range devices and 100 to 120 MB/s on higher end devices. The all-new and powerful MTP kernel is named after Dr. A.

P. J. Abdul Kalam Do check out the Go package which I've written to build Kalam Kernel: github.com/ganeshrvel/go-mtpx . Feel free to raise PRs. System Requirements and Support

Installation

  • System Requirements: macOS 11.0 (Big Sur) or higher
  • Website URL: https://openmtp.ganeshrvel.com
  • Repo URL: https://github.com/ganeshrvel/openmtp
  • Contacts: [email protected]
  • Safe, Transparent and Open-Source
  • Plug and Play via USB. No hassles, easy and instant connection.
  • Select between Internal Memory and SD Card
  • Transfer multiple files which are larger than 4GB
  • Dark mode
  • Drag-and-drop support
  • Split pane views for both Local Computer and Android device
  • Choose between Grid and List view.
  • Use Keyboard Shortcuts to navigate through your files.
  • No collection of personally identifiable information.
  • To support macOS version below Big Sur the Kalam kernel needs to be compiled on an older macOS machine every time there is an update, which is practically very difficult
  • Only the latest 3 versions of macOS will receive the Kalam Kernel updates, which include new device support, fixes, and stability improvements. macOS Big Sur (11.0) or above will receive the above-mentioned updates
  • We have now officially retired the support for Kalam Kernel on macOS 10.13 (OS X High Sierra) and lower. Only the "Legacy" MTP mode will continue working on these outdated machines.
  • We will continue releasing the updates for both Intel and ARM64 machines
  • Download the Mac Apple Silicon version
  • Download the Mac Intel version
  • Using Homebrew Cask

newer versions:

命令
brew install openmtp --cask

older versions:

命令
brew cask install openmtp

Screengrabs Keyboard Shortcuts Command Keyboard Shortcut Delete backspace New Folder command (⌘) + n Copy command (⌘) + c Copy to Queue command (⌘) + shift + c Paste command (⌘) + v Refresh command (⌘) + r Folder Up command (⌘) + b Select All command (⌘) + a Rename command (⌘) + d Switch Tab command(⌘) + 1 Open enter Navigate Left left Navigate Right right Navigate Up up Navigate Down down Select Multiple Items Forward (in Grid View) shift + left Select Multiple Items Backward (in Grid View) shift + right Select Multiple Items Forward (in List View) shift + up Select Multiple Items Backward (in List View) shift + down Select Multiple Items (with mouse) command (⌘) + click or shift + click Building from Source Requirements: Node.

js v16 , Git and Yarn package manager Clone

  • Find the latest dmg file from GitHub Releases
命令
git clone https://github.com/ganeshrvel/openmtp.git
命令
cd openmtp

install yarn

命令
npm install -g yarn

install sentry cli

命令
npm -g i @sentry/cli
命令
yarn

来源教程配图

OpenMTP File Explorer
配图 1 · OpenMTP File Explorer查看原图
OpenMTP File Transfer
配图 2 · OpenMTP File Transfer查看原图

适用场景

学习研究
开源项目实践