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:
社区作者 · 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
- Contacts: [email protected]
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 --caskolder 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.gitcd openmtpinstall yarn
npm install -g yarninstall sentry cli
npm -g i @sentry/cliyarnRun
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 devFor Windows
set UPGRADE_EXTENSIONS=1 && npm run devDevelopment
yarn devPre-production
yarn startDebugging 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/wizardsentry-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 packageFor multiple platforms
yarn package-allTechnical 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 devFor Windows
set UPGRADE_EXTENSIONS=1 && npm run devTroubleshooting
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 --caskolder versions:
brew cask install openmtpScreengrabs 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.gitcd openmtpinstall yarn
npm install -g yarninstall sentry cli
npm -g i @sentry/cliyarn