A fork of syncthing-android that adds battery-saving options. Original repository: https://github.com/Catfriend1/syncthing-android
Go to file
Erik van Oosten b960117994 Document how to switch from official version (#1153)
* Document how to switch from official version

Based on the documentation in https://github.com/Catfriend1/syncthing-android/issues/1141#issuecomment-2395393953

* Update README.md

* Update README.md

---------

Co-authored-by: Catfriend1 <16361913+Catfriend1@users.noreply.github.com>
2024-10-21 18:09:16 +02:00
app Translated using Weblate (Finnish) 2024-10-21 08:29:55 +02:00
debug_scripts Delete gen_changelog.sh 2023-11-15 23:39:39 +01:00
docker Update native build to use go 1.11.4 (fixes #213) (#214) 2019-02-05 23:28:47 +01:00
fdroiddata Update com.github.catfriend1.syncthingandroid.yml 2023-11-21 21:59:42 +01:00
gradle/wrapper gradle update 8.7 2024-07-27 13:49:39 +02:00
graphics Integrate gradle plugin for translation uploads (fixes #408, #463). 2015-11-16 22:10:00 +01:00
roboscript Update roboscript 2019-09-22 20:41:38 +02:00
syncthing APK version v1.27.12.0 2024-09-13 11:27:16 +02:00
wiki Compat with "Add HTML login form" upstream PR-8757 (#1007) 2023-10-14 21:49:26 +02:00
_config.yml Set theme jekyll-theme-leap-day 2019-08-26 00:29:36 +02:00
.gitattributes Create .gitattributes 2019-06-17 06:23:10 +02:00
.gitignore Update gitignore 2023-10-14 22:34:19 +02:00
.gitmodules Revert "Revert build script changes" 2017-10-24 14:55:28 +09:00
App_build_and_release.cmd Update App_build_and_release.cmd 2023-12-05 18:45:52 +01:00
build.gradle gradle update 8.7 2024-07-27 13:49:39 +02:00
CONTRIBUTING.md Fixing typo Github to GitHub. (#1103) 2024-03-23 08:26:04 +01:00
git_diff_main.cmd Update SyncthingNative to v1.15.0-rc.4 (#754) 2021-03-17 11:21:15 +01:00
git_fetch_branch.cmd Update git_fetch_branch.cmd 2019-09-02 13:53:07 +02:00
git_fetch_branch.sh Import translations / Force lint checks before build (#132) 2018-11-29 22:16:51 +01:00
gradle.properties Android target SDK 33 > 34 (#1017) 2023-10-15 00:12:54 +02:00
gradlew Update gradle wrapper to 7.0.2 2021-09-24 13:12:20 +02:00
gradlew.bat Update gradle wrapper to 7.0.2 2021-09-24 13:12:20 +02:00
install_minimum_android_sdk_prerequisites.py Update install_minimum_android_sdk_prerequisites.py 2024-07-27 14:02:28 +02:00
ISSUE_TEMPLATE.md Update ISSUE_TEMPLATE.md (#758) 2021-03-14 18:09:18 +01:00
LICENSE Change license to MPLv2. 2015-03-17 22:27:50 +01:00
merge-squash.cmd rename file 2021-09-15 11:34:18 +02:00
postbuild_copy_apk.cmd Update postbuild_copy_apk.cmd 2024-02-08 20:58:41 +01:00
prepare-release.bash prepare_release.bash: Only use reviewed translations 2019-06-15 11:01:11 +02:00
privacy-policy.md Fixing typo Github to GitHub. (#1103) 2024-03-23 08:26:04 +01:00
psreplace.cmd Create psreplace.cmd 2021-09-15 10:23:00 +02:00
README.md Document how to switch from official version (#1153) 2024-10-21 18:09:16 +02:00
setenv.cmd buildScript: F-Droid use NDK served by fdroiddata def (fixes #1034) (#1036) 2023-11-17 00:25:35 +01:00
settings.gradle Revert "Revert build script changes" 2017-10-24 14:55:28 +09:00
SyncthingNative_update_and_build.cmd APK version v1.27.2.1 2024-01-07 14:00:14 +01:00
update_fdroid_mirror_repo_from_main.cmd Update update_fdroid_mirror_repo_from_main.cmd 2021-09-27 19:11:40 +02:00

Syncthing-Fork - A Syncthing Wrapper for Android:

License: MPLv2 Translation status

A wrapper of Syncthing for Android. Head to the "releases" section or F-Droid for builds. Please open an issue under this fork if you need help. Important: Please don't file bugs at the upstream repository "syncthing-android" if you are using this fork.

screenshot 1 screenshot 2 screenshot 3

Major enhancements in this fork are:

  • Folder, device and overall sync progress can easily be read off the UI.
  • "Syncthing Camera" - an optional feature (with optional permission to use the camera) where you can take pictures with your friend, partner, ... on two phones into one shared and private Syncthing folder. No cloud involved. (deprecated)
  • "Sync every hour" to save even more battery
  • Individual sync conditions can be applied per device and per folder (for expert users).
  • Recent changes UI, click to open files.
  • Changes to folder and device config can be made regardless if syncthing is running or not.
  • UI explains why syncthing is running or not.
  • "Battery eater" problem is fixed.
  • Discover other Syncthing devices on the same network and easily add them.
  • Supports two-way synchronization on external sd cards since Android 11.
  • Supports encrypted folders on untrusted devices.

Switching from the (now deprecated) official version

Switching is easier then you may think!

  • On Syncthing on the official app, go into the settings and create a backup
  • Confirm you can see that backup in your files
  • Now stop the official app entirely using the system app settings for Syncthing (force stop the app basically - we need to ensure it's not running)
  • Now start Syncthing-Fork
  • In the Syncthing-Fork settings, restore the backup you created earlier
  • Like magic, everything should be as it was in Syncthing official.
  • Confirm everything looks good
  • Uninstall the official Syncthing app

About Play Store releases:

  • Planning to close my Google Play Developer Account. Please say hi if you are interested in obtaining the latest gplay release files from me to help in publishing this app.

Privacy Policy

See our document on privacy: privacy-policy.md.

Goal of the forked version

  • Develop and try out enhancements together
  • Release the wrapper more frequently to identify and fix bugs together caused by changes in the syncthing submodule
  • Make enhancements configurable in the settings UI, e.g. users should be able to turn them on and off
  • Let's get ready for newer Android versions that put limits on background syncing tools. We need your bug reports as detailed as possible

Building

Prerequisites

If you miss any prerequisite, the shell scripts will abort with an error and tell you what you need to do. In case you like to dive into building directly, you can skip this section and jump directly to "Build instructions".

  • Android SDK
# This command will help you install the minimum Android SDK components to build this project in case you don't use Android Studio.
python install_minimum_android_sdk_prerequisites.py
  • Android NDK r26b
$ANDROID_NDK_HOME environment variable should point at the root directory of your NDK. If the variable is not set, build-syncthing.py will automatically try to download and setup the NDK.
  • Go 1.21.4
Make sure, Go is installed and available on the PATH environment variable. If Go is not found on the PATH environment variable, build-syncthing.py will automatically try to download and setup GO on the PATH.
  • Python 3.9.6 64-Bit
Make sure, Python is installed and available on the PATH environment variable. Download 'https://www.python.org/ftp/python/3.9.6/python-3.9.6-amd64.exe' and run 'python-3.9.6-amd64.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0'
  • Git (for Linux) or Git for Windows
Make sure, git (or git.exe) is installed and available on the PATH environment variable. If Git is not found on the PATH environment variable, build-syncthing.py will automatically try to download and setup MinGit 2.19.0-x64 on the PATH.
  • Java Development Version 17
"java" should be on the PATH environment variable. Download from Oracle and run the installer. Log off and back on to let the new PATH variable take effect.

Build instructions

Edit "App_build_and_release.cmd" and set "SKIP_RELEASE_BUILD=1" if you don't need to upload signed releases to Google Play. This will simplify things for you.

Build on Linux

A Linux VM, for example running Debian, is recommended to build this.

Build SyncthingNative and the Syncthing-Android wrapper using the following commands:

apt-get -y install git openjdk-11-jdk python
mkdir -p /root/work
cd /root/work
git clone https://github.com/Catfriend1/syncthing-android.git --recursive
cd /root/work/syncthing-android
./gradlew buildNative
./gradlew lint assembleDebug

You can also use Android Studio to build the apk after you manually ran the ./gradlew buildNative command in the repository root.

To clean up all files generated during build, use the following commands:

./gradlew cleanNative
./gradlew clean

Build on Windows

git clone https://github.com/Catfriend1/syncthing-android.git --recursive
cd /d "YOUR_CLONED_GIT_ROOT"
SyncthingNative_update_and_build
App_build_and_release

Development Notes

It is recommended to change the GUI and Listen Address ports for the debug app, e.g. to 8385 and 22001 respectively.

The Syncthing native used for this android application provides a web interface by default. It can be accessed via the Settings menu -> 'Web GUI'. It is quite helpful to access this web interface from your development machine. Read android documentation on how to access the network of your emulator. Or use the following command to connect to the single currently running emulator/AVD.

adb forward tcp:18384 tcp:8384

Start Syncthing app on your emulator and access the web interface from you favorite browser of your development machine via https://127.0.0.1:18384

License

The project is licensed under the MPLv2.