Convert Figma logo to code with AI

Catfriend1 logosyncthing-android

Syncthing-Fork - A Syncthing Wrapper for Android.

3,252
102
3,252
19

Top Related Projects

Wrapper of syncthing for Android.

66,967

Open Source Continuous File Synchronization

3,926

:phone: The ownCloud Android App

Quick Overview

Syncthing-Android is an open-source, continuous file synchronization program for Android devices. It extends the functionality of Syncthing to mobile platforms, allowing users to synchronize files between their Android devices and other Syncthing-enabled devices or computers seamlessly and securely.

Pros

  • Decentralized and secure file synchronization without relying on cloud services
  • Cross-platform compatibility (Android, Windows, macOS, Linux)
  • Open-source with active community development and support
  • Customizable synchronization settings and folder sharing options

Cons

  • May be complex for non-technical users to set up and configure
  • Can potentially consume more battery life compared to cloud-based sync solutions
  • Requires devices to be online simultaneously for real-time synchronization
  • Limited integration with other Android apps compared to popular cloud services

Getting Started

To get started with Syncthing-Android:

  1. Install the app from the Google Play Store or F-Droid.
  2. Launch the app and follow the initial setup wizard.
  3. Add folders you want to sync by tapping the "+" button.
  4. Connect to other devices by scanning their QR codes or entering their device IDs.
  5. Configure sync settings for each folder and device as needed.
  6. Allow the app to run in the background for continuous synchronization.

For more detailed instructions and troubleshooting, refer to the official documentation on the project's GitHub repository.

Competitor Comparisons

Wrapper of syncthing for Android.

Pros of syncthing-android

  • Official repository maintained by the Syncthing team
  • More frequent updates and releases
  • Larger community and contributor base

Cons of syncthing-android

  • Less customization options for power users
  • May lack some experimental features found in forks
  • Potentially slower to implement user-requested features

Code Comparison

syncthing-android:

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    menuInflater.inflate(R.menu.toolbar_menu, menu)
    return true
}

Catfriend1/syncthing-android:

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    menuInflater.inflate(R.menu.toolbar_menu, menu)
    mOptionsMenu = menu
    updateOptionsMenu()
    return true
}

The Catfriend1 fork adds an additional method call updateOptionsMenu() after inflating the menu, potentially providing more dynamic menu options.

Both repositories share the same core functionality, but the Catfriend1 fork may offer additional features and customizations for advanced users. The official syncthing-android repository benefits from more frequent updates and a larger community, while the Catfriend1 fork might be more suitable for users seeking experimental features or specific enhancements.

66,967

Open Source Continuous File Synchronization

Pros of syncthing

  • More comprehensive and feature-rich, as it's the core project
  • Supports multiple platforms beyond Android
  • Larger community and more frequent updates

Cons of syncthing

  • Not specifically optimized for Android
  • May have a steeper learning curve for mobile users
  • Potentially higher resource usage on mobile devices

Code comparison

syncthing:

func (m *Model) ClusterConfig(deviceID protocol.DeviceID, cm protocol.ClusterConfig) {
    // Handle cluster configuration
}

syncthing-android:

public class SyncthingService extends Service {
    // Android-specific service implementation
}

Additional notes

Syncthing is the main project that provides the core functionality for continuous file synchronization across devices. It's written in Go and designed to be platform-agnostic.

Syncthing-android is a fork of the original Syncthing Android app, maintained by Catfriend1. It focuses on providing an optimized Android experience with additional features and improvements specific to the mobile platform.

While syncthing offers a more comprehensive solution for multi-platform synchronization, syncthing-android provides a tailored experience for Android users with potentially better performance and usability on mobile devices.

3,926

:phone: The ownCloud Android App

Pros of owncloud/android

  • Integrated with ownCloud's ecosystem, offering seamless file sync and sharing
  • Supports multiple accounts and server instances
  • Includes features like automatic photo upload and offline file access

Cons of owncloud/android

  • Limited to ownCloud servers, less flexible for other sync solutions
  • May require more server-side setup and maintenance
  • Potentially less privacy-focused, as data is stored on centralized servers

Code comparison

syncthing-android:

@Override
public void onReceive(Context context, Intent intent) {
    if (TextUtils.equals(intent.getAction(), ConnectivityManager.CONNECTIVITY_ACTION)) {
        updateRunConditions();
    }
}

owncloud/android:

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_POWER_CONNECTED) ||
            intent.getAction().equals(Intent.ACTION_POWER_DISCONNECTED)) {
        OCFileListFragment listOfFiles = getListOfFilesFragment();
        if (listOfFiles != null) {
            listOfFiles.refreshDirectory();
        }
    }
}

Both repositories implement broadcast receivers, but for different purposes. syncthing-android focuses on network connectivity changes, while owncloud/android handles power connection events and refreshes the file list accordingly.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

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/syncthing-android" if you are using this fork.

screenshot 1 screenshot 2 screenshot 3

I am no longer publishing this on Google Play

"nel0x" has announced to continue publishing on the play store. I welcome his help and the work I think he'll put into his mission. It's up to you, reading this, to decide if to trust and/or support him or go with the F-Droid release channel of this app instead. You don't know me and I don't know him... we are all volunteers in the spirit of open source.

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.
  • Partial Android 15+ support regarding the run condition monitor due to Android restrictions. Feel free to PR and help here :-).

Switching from the (now deprecated) official version

Switching is easier than 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.
  • Delete the syncthing configuration backup from backups/syncthing.

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

Build on Debian Linux / WSL - recommended way

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

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

#
# Install prerequisites.
apt-get -y install gcc git openjdk-17-jdk python3 unzip
#
# Clone repository.
mkdir -p ~/git && cd ~/git
git clone https://github.com/Catfriend1/syncthing-android.git --recursive
## git stash && git pull origin Catfriend1-patch-1 && git checkout Catfriend1-patch-1
#
# Build
cd ~/git/syncthing-android
python3 install_minimum_android_sdk_prerequisites.py
./gradlew buildNative
export ANDROID_HOME=~/git/syncthing-android-prereq
echo -e "\norg.gradle.jvmargs=-Xmx4096m" >> gradle.properties
./gradlew lintDebug
./gradlew assembleDebug

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

./gradlew cleanNative
./gradlew clean

Build on Windows

::
:: Install prerequisites.
winget install --accept-source-agreements --source winget --exact --id "Git.MinGit" --scope machine
winget install --accept-source-agreements --source winget --exact --id "AdoptOpenJDK.OpenJDK.17" --scope machine
winget install --accept-source-agreements --source winget --exact --id "Python.Python.3.9" --scope machine -h --override "/quiet InstallAllUsers=1 PrependPath=1 Include_test=0" 
::
:: Clone repository.
git clone https://github.com/Catfriend1/syncthing-android.git --recursive
::
:: Build
cd /d "YOUR_CLONED_GIT_ROOT"
SyncthingNative_update_and_build
App_build_and_release

Development Notes

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 127.0.0.1:18384

License

The project is licensed under MPLv2.