RCX - Rclone for Android

Overview

RCX - Rclone for Android

license: GPL v3 Github Releases GitHub release Google Play F-Droid

A cloud file manager, powered by rclone.

Features

Cloud Access 256 Bit Encryption1 Integrated Experience
Cloud Access 256 Bit End-to-End Encryption Integrated Experience
Use your cloud storage like a local folder. Keep your files private on any cloud provider with crypt remotes. Don't give up features or comfort just because it runs on a phone.
  • File Management (list, view, download, upload, move, rename, delete files and folders)
  • Streaming (Stream media files, serve files and directories over FTP, HTTP, WebDAV or DLNA)
  • Integration (Access local storage devices and share files with the application to store them on a remote)
  • Many cloud storage providers (all via rclone config import, some without)
  • Material Design (Dark theme, custom primary and accent colors)
  • All architectures (runs on ARM, ARM64, x86 and x64 devices, Android 7+)
  • Storage Access Framework (SAF) (see docs) for SD card and USB device access.

Screenshots

Manage Storage Upload Files Explore Files Manage Files
screenshot1 screenshot3 screenshot7 screenshot8

Installation

Grab the latest version of the signed APK and install it on your phone. You can also register for the closed Google Play testing group, the Google Play Beta, or on F-Droid.

CPU architecture Where to find APK identifier
ARM 32 Bit older devices armeabi-v7a
ARM 64 Bit most devices arm64-v8a
Intel/AMD 32 Bit some TV boxes and tablets x86
Intel/AMD 64 Bit some emulators x86_64

If you don't know which version to pick use rcx--universal-release.apk. Most devices run ARM 64 Bit, and 64 Bit devices often can also run the respective 32 bit version at lower performance. The app runs on any phone, tablet or TV with Android 7 or newer, as long as you have a touchscreen or mouse.

Usage

See the documentation.

Known Issues

  • Reauthorization of OAuth remotes shows intermittent failures. This is currently under investigation.

Contributing

See CONTRIBUTING

License

About this app

This app is released under the terms of the GPLv3 license. Community contributions are licensed under the MIT license, and CLA Assistant will ask you to confirm a CLA stating that if create a PR.

This is a fork of rcloneExplorer by Patryk Kaczmarkiewicz. For the original repository, see kaczmarkiewiczp/rcloneExplorer. If you want to convey a modified version (fork), we ask you to use a different name, app icon and package id as well as proper attribution to avoid user confusion.

Libraries

Comments
  • Golang compiler regression for some arm64-v8a devices

    Golang compiler regression for some arm64-v8a devices

    Hello,

    Unlocking my configuration file works with v1.10.2, but not with v1.11.3.167 (Google Play version).

    I noticed that the rclone version is "-1" for v1.11.3.167. So i guess that's the issue. Tried Google Play version, but also rcx-v1.11.3-universal-release.apk from github repo.

    Old versions from https://github.com/kaczmarkiewiczp/rcloneExplorer work perfectly.

    • Bad rclone version :

    Screenshot_20200502-114441

    • Error message :

    Screenshot_20200502-114507

    Technical Information

    rclone: -1
    rcloneExplorer: 1.11.3
    android-sdk: 23
    android-device: Redmi Note 3
    android-ndk-abis: arm64-v8a;armeabi-v7a;armeabi
    
    🐞 Bug Priority: P2 
    opened by FoxP 23
  • Implement Task to quickly sync files

    Implement Task to quickly sync files

    Also see original pull request.

    • [x] Remove GPL-File (Switch to MIT)
    • [ ] !Check general Codestyling
      • [x] Use constants where constants are appropriate
      • [ ] !Indentation
      • [x] Naming
      • [x] Remove unnessessary comments
    • [ ] Fix the "ghost" notification required to start a task via intentservice
    • [ ] Find a Solution for the configurationexport which uses deprecated methods
    • [x] Remove logging
    • [ ] Write some tests
    • [x] Properly document the intentservice
    • [ ] Find out how the intentservice needs to be structured to allow it to act as a tasker plugin
    • [x] !Clean git-history
    • [x] !Add myself to the contributors file

    Additional features:

    • [x] Add persistent notification after rclone finishes when it was started by an intent (so that the user is informed whether it was a success or not)
    • [x] Add 'Pin to Homescreen'-shortcut for Task
    • [x] Add switch to surpress notification for task so that no notification shows up

    Further bugs:

    • [ ] Only one sync task can be run at a time
    • [x] !Add proper icon for tasks in navigation-drawer
    • [ ] !Verify Dialog for taskcreate
    ✨ Enhancement 
    opened by newhinton 22
  • Port tasks to new rcx-version

    Port tasks to new rcx-version

    This updates the tasks-branch from rclone to rcx and the changes made since the fork

    Closes #146, #38, #61 and i guess it closes #128 aswell

    Todo:

    • [x] Migrate Export/Import to JSON
    • [x] -> when making an export, it should export tasks, triggers and the rclone config as a zip file
    • [x] Switch Export filestorage to non-deprecated one (https://github.com/x0b/rcx/pull/37#discussion_r406750606)
    • [x] Use proper logging (https://github.com/x0b/rcx/pull/37#discussion_r406751537)
    • [x] Fix naming in DatabaseHandler
    • [x] (Go over all of this: https://github.com/x0b/rcx/commit/2a19150d984339d470afc4dda488934db254bf0d)
    • [x] Fix Crash in Triggerfragment when no tasks are defined
    • [ ] Discuss naming of things (tasks/trigger)
    • [ ] Fix theming not applied in new Activities (I dont quite get why it's not working, it should)
    • [x] Add SharedPreferences to backup.zip
    • [x] After restoring backups, the app crashes because restoring prefs introduces an error to taskdecription (#157)
    • [x] when no tasks are defined, the button linking to tasks should not only open the tasklist but the taskcreation activity aswell
    • [x] also, maybe add a cool message that there are no tasks?
    • [x] remove logging that was left somewhere
    • [x] task list icons are not properly stored/used
    • [x] fix back button behaviour on fragments
    • [x] Investigate why disabled-state is beeing ignored by the trigger
    • [x] Add task-stacking, so that tasks scheduled at the same time are not lost

    In the future: I want to investigate how exactly rcx behaves when multiple tasks are run simultaneous. The resulting information can be used to extend the trigger mechanism, so that it would be possible to run a task after a different task was run

    • [ ] extend triggermechanism (maybe)
    • [ ] Folderpicker for remotes (In the future. Maybe. Maybe not.)
    • [ ] Status Indicator for task (Last run succeded, failed or is currently running)
    • [ ] Add special task to export backup to remote so that rcx can backup itself
    • [ ] Check regularly for storage access, because tasks "fail silently" with successmessages when it cannot access internal storage

    Those ideas will very likely not be in this PR

    opened by newhinton 21
  • Detect PDF files and guess their mime types on encrypted remotes

    Detect PDF files and guess their mime types on encrypted remotes

    https://github.com/GrapheneOS/PdfViewer/issues/91

    Trying to directly view pdfs in encrypted folders in rclone creates a "Cannot open file with invalid MIME type" error.

    What version of RCX are you using (About -> App version)?

    1.12.0

    What is your Android version, phone model and manufacturer?

    Pixel 4a, grapheneos

    Which steps are required to reproduce this issue?

    Opening a pdf on an encrypted remote

    What is your configuration (rclone.conf)?

    Does the same issue also occur when using the same configuration on a PC or in Termux?

    No

    What are the contents of Android/data/io.github.x0b.rcx/files/logs/log.txt?

    log.txt (click to expand)
    
    None
    
    

    ✨ Enhancement Priority: P3 
    opened by fieryflamon 13
  • Problems with Serve

    Problems with Serve

    Still some problems with Serve it starts but after starting webdav can browse for 10 seconds then get connection lost. No info on error logs.

    The older versions before 1.9 no problems

    opened by Ley212 12
  • Known issue: Error when trying to use VCP - Didn't find key

    Known issue: Error when trying to use VCP - Didn't find key "remote" in input

    What version of RCX are you using (About -> App version)?

    version: 1.12.0-r210418 versionCode: 186

    What is your Android version, phone model and manufacturer?

    Android 10

    Which steps are required to reproduce this issue?

    1. Enable VCP.
    2. Try to browse my files with the Android 10 "Files" app.
    3. Receive error Didn't find key "remote" in input.

    What are the contents of Android/data/io.github.x0b.rcx/files/logs/log.txt?

    N/A

    log.txt (click to expand)
    
    
    

    🐞 Bug β“ question Priority: P2 πŸ’¬ Beta Feedback 
    opened by x0b 9
  • Getting

    Getting "Error creating remote"

    What version of RCX are you using (About -> App version)?

    1.11.4

    What is your Android version, phone model and manufacturer?

    Android 6.0.1, 1+1

    Which steps are required to reproduce this issue?

    1. Add remote
    2. Select Box, Dropbox, Google Drive, Google Photos, HubiC, Microsoft OneDrive, pCloud, Yandex Disk
    3. Fill all fields except those with "Leave blank normally"

    What are the contents of Android/data/io.github.x0b.rcx/files/logs/log.txt?

    log.txt (click to expand)
    
    No `logs` folder within `Android/data/io.github.x0b.rcx/files/`
    
    

    🐞 Bug Priority: P2 
    opened by kcthrn 8
  • Unstable RCX serve

    Unstable RCX serve

    What version of RCX are you using (About -> App version)?

    App version: 1.12.0 (the version available on the Play Store) Rclone version: v1.55.1-rcx

    What is your Android version, phone model and manufacturer?

    Android 8, Samsung Galaxy S7 Edge

    Which steps are required to reproduce this issue?

    1. Open a crypt remote
    2. Choose "serve" option (no matter which protocol chosen, although I've been trying to use mostly webdav).
    3. After using it for a while (copying/moving files around, creating folders, etc) it just stops working. No apparently log messages. In this particular case I'm using Solid Explorer to browse the files. In fact I noticed that there was another ticket already closed with an issue similar to mine but I thought it'd be better to open a new one anyway.

    What is your configuration (rclone.conf)?

    [GoogleDrive]
    type = drive
    client_id = ***
    client_secret = ***
    scope = drive
    token = {"access_token":"***","token_type":"Bearer","refresh_token":"***","expiry":"2021-05-11T00:49:05.391805074Z"}
    
    [GoogleDriveEnc]
    type = crypt
    remote = GoogleDrive:
    password = ***
    filename_encryption = Standard
    directory_name_encryption = true
    
    [5d44cd8d-397c-4107-b79b-17f2b6a071e8]
    type = alias
    remote = /storage/emulated/0
    

    Does the same issue also occur when using the same configuration on a PC or in Termux?

    I've never used Termux, but it works on my PC.

    What are the contents of Android/data/io.github.x0b.rcx/files/logs/log.txt?

    log.txt (click to expand)
    
    

    2021-05-11 06:35:28 - 2021/05/11 09:35:04 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf" 2021/05/11 09:35:04 DEBUG : rclone: Version "v1.55.1-rcx" starting with parameters ["/data/app/io.github.x0b.rcx-d6da5-DbG_wT-P7txU3bXg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "serve" "http" "--addr" "127.0.0.1:29179" "GoogleDriveEnc:" "--baseurl" "/0UehRTO-bHAbYeJHKdhesA/GoogleDriveEnc"] 2021/05/11 09:35:04 DEBUG : Creating backend with remote "GoogleDriveEnc:" 2021/05/11 09:35:04 DEBUG : Creating backend with remote "GoogleDrive:" 2021/05/11 09:35:05 DEBUG : Google drive root '': root_folder_id = "0AD8UBUc0_SjuUk9PVA" - save this in the config to speed up startup 2021/05/11 09:35:05 NOTICE: Encrypted drive 'GoogleDriveEnc:': Serving on http://127.0.0.1:29179/0UehRTO-bHAbYeJHKdhesA/GoogleDriveEnc/

    2021-05-11 06:36:00 - 2021/05/11 09:35:59 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf" 2021/05/11 09:35:59 DEBUG : rclone: Version "v1.55.1-rcx" starting with parameters ["/data/app/io.github.x0b.rcx-d6da5-DbG_wT-P7txU3bXg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "serve" "http" "--addr" "127.0.0.1:29179" "GoogleDriveEnc:" "--baseurl" "/0UehRTO-bHAbYeJHKdhesA/GoogleDriveEnc"] 2021/05/11 09:35:59 DEBUG : Creating backend with remote "GoogleDriveEnc:" 2021/05/11 09:35:59 DEBUG : Creating backend with remote "GoogleDrive:" 2021/05/11 09:36:00 DEBUG : Google drive root '': root_folder_id = "0AD8UBUc0_SjuUk9PVA" - save this in the config to speed up startup 2021/05/11 09:36:00 NOTICE: Encrypted drive 'GoogleDriveEnc:': Serving on http://127.0.0.1:29179/0UehRTO-bHAbYeJHKdhesA/GoogleDriveEnc/

    2021-05-11 07:20:58 - 2021/05/11 10:20:55 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf" 2021/05/11 10:20:55 DEBUG : rclone: Version "v1.55.1-rcx" starting with parameters ["/data/app/io.github.x0b.rcx-d6da5-DbG_wT-P7txU3bXg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "serve" "http" "--addr" "127.0.0.1:29179" "GoogleDriveEnc:" "--baseurl" "/T5joMwj8HwPV55arnx1aSg/GoogleDriveEnc"] 2021/05/11 10:20:55 DEBUG : Creating backend with remote "GoogleDriveEnc:" 2021/05/11 10:20:55 DEBUG : Creating backend with remote "GoogleDrive:" 2021/05/11 10:20:56 DEBUG : Google drive root '': root_folder_id = "0AD8UBUc0_SjuUk9PVA" - save this in the config to speed up startup 2021/05/11 10:20:56 NOTICE: Encrypted drive 'GoogleDriveEnc:': Serving on http://127.0.0.1:29179/T5joMwj8HwPV55arnx1aSg/GoogleDriveEnc/

    🐞 Bug Priority: P2 Requires Rclone Enhancement 
    opened by alscaldas 7
  • delete is slow on folders with many files

    delete is slow on folders with many files

    Pre-Submission checklist

    • [x] There is no existing issue that already asks for this feature.
      If no, please add a +1, and maybe a comment if you have more to add.
    • [ ] The feature already exists in rclone (on your PC or in Termux)
    • [ ] I am prepared to help make this feature

    What version of RCX are you using (About -> App version)?

    1.11.4

    What problem are you trying to solve?

    I'm experiencing the same issue as discussed here:

    https://forum.rclone.org/t/rclone-delete-with-large-remote-folders/14701

    You seem to be able to solve it by changing the commands used.

    Currently it takes me more than one minute to delete each file in a folder with hundreds of thousands of files. It will take hundreds of thousands of minutes to complete. I'm guessing it will gradually get faster and faster because the list of files will get shorter. It's slow because the basic delete command returns an updated list of files.

    What should RCX be able to do differently with help this problem?

    Use rclone deletefile or rclone delete --files-from to speed up deletion in large folders.

    ✨ Enhancement 
    opened by adjenks 7
  • Jottacloud OAuth error: unexpected end of JSON input

    Jottacloud OAuth error: unexpected end of JSON input

    What problem are you having with rcloneExplorer?

    I'm trying to use JottaCloud with this app. JottaCloud support works fine with rclone. Since Jotta cannot be added via the Add dialog, I imported a working config file from desktop rclone.

    Yet, when accessing the remote, I get "Error retrieving directory content".

    The logfile says:

    2020-05-26 09:45:24 - 2020/05/26 07:45:24 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
    2020/05/26 07:45:24 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
    2020/05/26 07:45:24 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input
    
    2020-05-26 09:53:28 - 2020/05/26 07:53:28 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
    2020/05/26 07:53:28 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
    2020/05/26 07:53:28 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input
    
    2020-05-26 09:53:32 - 2020/05/26 07:53:32 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
    2020/05/26 07:53:32 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
    2020/05/26 07:53:32 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input
    
    2020-05-26 09:53:39 - 2020/05/26 07:53:39 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "link" "jotta:"]
    2020/05/26 07:53:39 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
    2020/05/26 07:53:39 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input
    
    2020-05-26 09:57:38 - 2020/05/26 07:57:38 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
    2020/05/26 07:57:38 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
    2020/05/26 07:57:38 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input
    
    2020-05-26 09:57:42 - 2020/05/26 07:57:42 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
    2020/05/26 07:57:42 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
    2020/05/26 07:57:42 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input
    
    2020-05-26 09:57:45 - 2020/05/26 07:57:45 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
    2020/05/26 07:57:45 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
    2020/05/26 07:57:45 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input
    
    2020-05-26 09:58:05 - 2020/05/26 07:58:05 DEBUG : rclone: Version "v1.51.0" starting with parameters ["/data/app/io.github.x0b.rcx-DV8zMG6FsYEuo7eIeAJMEg==/lib/arm64/librclone.so" "--cache-chunk-path" "/data/user/0/io.github.x0b.rcx/cache" "--cache-db-path" "/data/user/0/io.github.x0b.rcx/cache" "--config" "/data/user/0/io.github.x0b.rcx/files/rclone.conf" "-vvv" "lsjson" "jotta:"]
    2020/05/26 07:58:05 DEBUG : Using config file from "/data/user/0/io.github.x0b.rcx/files/rclone.conf"
    2020/05/26 07:58:05 Failed to create file system for "jotta:": Failed to configure Jottacloud oauth client: unexpected end of JSON input
    

    I tried tapping the "Authorization" label in the remotes properties. But the only change I see is that first open of the remote takes longer. But still fails.

    Technical Information

    rclone: v1.51.0
    rcloneExplorer: 1.11.4
    android-sdk: 28
    android-device: EML-L09
    android-ndk-abis: arm64-v8a;armeabi-v7a;armeabi
    
    ❓ question 
    opened by oleid 6
  • Unlog

    Unlog

    Hello, i Wonder if it impossible to "unlog" from a remontΓ© and protect or with a password . Because as it IS right now, everyone that has Access to my phone has also Access to my backup files....

    Thanks for your help.

    Technical Information