Convert Figma logo to code with AI

syncthing logosyncthing-android

Wrapper of syncthing for Android.

3,423
379
3,423
159

Top Related Projects

64,580

Open Source Continuous File Synchronization

Windows tray utility / filesystem watcher / launcher for Syncthing

Quick Overview

Syncthing-Android is the official Android app for Syncthing, a continuous file synchronization program. It allows users to sync files between multiple devices, including Android smartphones and tablets, without relying on a centralized server. The app provides a user-friendly interface for managing Syncthing on Android devices.

Pros

  • Open-source and free to use
  • Decentralized architecture, enhancing privacy and security
  • Cross-platform compatibility (Android, iOS, Windows, macOS, Linux)
  • Customizable sync settings and file versioning

Cons

  • May be complex for non-technical users
  • Can consume significant battery and data if not configured properly
  • Limited support for real-time collaboration compared to cloud-based solutions
  • Requires devices to be online simultaneously for syncing

Getting Started

  1. Install the Syncthing-Android app from the Google Play Store or F-Droid.
  2. Open the app and grant necessary permissions.
  3. Add devices you want to sync with by scanning their QR codes or entering their device IDs.
  4. Create folders to sync and share them with your connected devices.
  5. Configure sync settings, such as versioning and ignore patterns.
  6. Start syncing your files across devices.

For more detailed instructions and troubleshooting, refer to the official Syncthing documentation at https://docs.syncthing.net/.

Competitor Comparisons

64,580

Open Source Continuous File Synchronization

Pros of Syncthing

  • Cross-platform support for Windows, macOS, Linux, and more
  • More extensive feature set and customization options
  • Larger and more active community for support and development

Cons of Syncthing

  • Requires separate installation and setup on Android devices
  • May be more complex for users primarily focused on mobile synchronization
  • Higher resource usage on mobile devices compared to dedicated Android app

Code Comparison

Syncthing (Go):

func (m *Model) ClusterConfig(deviceID protocol.DeviceID, cm protocol.ClusterConfig) {
    m.pmut.RLock()
    cfg, ok := m.cfg.Devices()[deviceID]
    m.pmut.RUnlock()
    if !ok {
        l.Infof("Cluster config from unknown device %s", deviceID)
        return
    }
}

Syncthing-Android (Java):

@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
    SyncthingService.SyncthingBinder syncthingBinder =
            (SyncthingService.SyncthingBinder) iBinder;
    mSyncthingService = syncthingBinder.getService();
    mSyncthingService.registerOnServiceStateChangeListener(this);
}

The Syncthing repository contains the core functionality written in Go, while Syncthing-Android is a Java-based Android-specific implementation that integrates with the core Syncthing functionality.

Windows tray utility / filesystem watcher / launcher for Syncthing

Pros of SyncTrayzor

  • Windows-specific UI with system tray integration
  • Built-in file browser for easy folder management
  • Automatic updates and crash reporting

Cons of SyncTrayzor

  • Limited to Windows platform
  • Less frequent updates compared to Syncthing-Android
  • Smaller community and contributor base

Code Comparison

SyncTrayzor (C#):

public class SyncthingProcess : IDisposable
{
    private Process _process;
    public event EventHandler<DataReceivedEventArgs> OutputDataReceived;
    public event EventHandler<DataReceivedEventArgs> ErrorDataReceived;
}

Syncthing-Android (Java):

public class SyncthingService extends Service implements
        SharedPreferences.OnSharedPreferenceChangeListener {
    private static final String TAG = "SyncthingService";
    private final IBinder mBinder = new SyncthingServiceBinder();
    @Inject NotificationHandler mNotificationHandler;
}

Summary

SyncTrayzor offers a native Windows experience with system tray integration and a built-in file browser, making it more user-friendly for Windows users. However, it's limited to the Windows platform and has a smaller community compared to Syncthing-Android. The latter provides broader platform support and more frequent updates due to its larger user base and contributor community. The code comparison shows different approaches, with SyncTrayzor using C# for Windows-specific features and Syncthing-Android using Java for Android compatibility.

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-android

License: MPLv2

A wrapper of Syncthing for Android.

screenshot 1 screenshot 2 screenshot 3

Get it on Google Play Get it on F-Droid

Status: "Maintenance mode" - Co-maintainers welcome

tl;dr: The app is still kept up to date, and contributions are still welcome - however even reviews for those can take a long time. Co-maintainers are very welcome - get in touch if you are interested.

No-one is dedicating significant time into development or reviews. It's still kept up to date with Syncthing, Android and dependencies under the wider Syncthing project umbrella on a best effort basis. Contributions are reviewed, however available time for that is scarce so it will take a while. And obviously it depends both on the size/clarity of the change and (admittedly subjective) relevance of it - chance of successful and speedier reviews is higher if your change is targeted and small.

No feature request taken (feature contributions case-by-case)

Handling feature requests use up the little time that is present to keep the app up-to-date, and there is no feature development happening. So unless you are opening a feature request to discuss your own contribution before jumping into coding, the request will be closed directly with some template answer pointing at this section.

Translations

The project is translated on Hosted Weblate.

Dev

Language codes are usually mapped correctly by Weblate itself. The supported set is different between Google Play and Android apps. The latter can be deduced by what the Android core framework itself supports. New languages need to be added in the repository first, then appear automatically in Weblate.

Building

These dependencies and instructions are necessary for building from the command line. If you build using Docker or Android Studio, you don't need to set up and follow them separately.

Dependencies

  1. Android SDK and NDK
    1. Download SDK command line tools from https://developer.android.com/studio#command-line-tools-only.

    2. Unpack the downloaded archive to an empty folder. This path is going to become your ANDROID_HOME folder.

    3. Inside the unpacked cmdline-tools folder, create yet another folder called latest, then move everything else inside it, so that the final folder hierarchy looks as follows.

      cmdline-tools/latest/bin
      cmdline-tools/latest/lib
      cmdline-tools/latest/source.properties
      cmdline-tools/latest/NOTICE.txt
      
    4. Navigate inside cmdline-tools/latest/bin, then execute

      ./sdkmanager "platform-tools" "build-tools;<version>" "platforms;android-<version>" "extras;android;m2repository" "ndk;<version>"
      

      The required tools and NDK will be downloaded automatically.

      NOTE: You should check Dockerfile for the specific version numbers to insert in the command above.

  2. Go (see https://docs.syncthing.net/dev/building#prerequisites for the required version)
  3. Java version 11 (if not present in $PATH, you might need to set $JAVA_HOME accordingly)
  4. Python version 3

Build instructions

  1. Clone the project with
    git clone https://github.com/syncthing/syncthing-android.git --recursive
    
    Alternatively, if already present on the disk, run
    git submodule init && git submodule update
    
    in the project folder.
  2. Make sure that the ANDROID_HOME environment variable is set to the path containing the Android SDK (see Dependecies).
  3. Navigate inside syncthing-android, then build the APK file with
    ./gradlew buildNative
    ./gradlew assembleDebug
    
  4. Once completed, app-debug.apk will be present inside app/build/outputs/apk/debug.

NOTE: On Windows, you must use the Command Prompt (and not PowerShell) to compile. When doing so, in the commands replace all forward slashes / with backslashes \.

License

The project is licensed under the MPLv2.