New Android app "Syncthing Lite"


(Felix Ableitner) #1

A year ago, Davide Imbriaco released an alternative Android app. That app had some great potential, but unfortunately, he stopped updating it some time this year. So I went ahead and forked the project, in order to work on it myself.

For the Android app, I basically did a complete rewrite, to improve the interface and code. I also converted the entire project to Kotlin.

For the library, I did some minor changes, like better exception handling and improved code formatting. I also fixed a problem that made the initial app start extremely slow.

There are still many things that should be fixed or improved, especially in the Syncthing protocol implementation. For example, it does not support delta index updates, and some methods of connecting to other devices. Unfortunately I’m not familiar with the Syncthing protocol, so it would be great if others could contribute here.

Android app source code

Java library source code

Google Play Download

Direct apk Download (the app is not on F-Droid yet)


Writing to external SD card in Android 5.0 and above
Syncthing as a share platform (not replication)
(Jakob Borg) #2

Awesome. Is this app “receive only” or it can upload photos etc?


(Felix Ableitner) #3

You can browse Syncthing folders, and download/upload individual files. However, it does not support any kind of automatic folder synchronization.


(Pazuu) #4

Absolutely awesome!!! Thank you!!! :tada:


(Simon) #5

Very nice. I had a look at the repos and did a little bit of BEP proto updating/cleanup. Syncthing-java compiled just fine, so I wanted to try and build syncthing-lite using this adapted lib. After quite a while I found out how I could direct gradle at the local repo, but now android studio refuses to build because of dependencies on both kotlin 1.2.0 and 1.1.57. Apparently android-fab depends on 1.1.57 while syncthing-lite/java depends on 1.2.0. How do you (@Nutomic) manage to build it despite this discrepancy? That was just a warning, so the problem is with how I include syncthing-java. Do you perchance see the problem with the following, or alternatively, how do you use “development versions” of syncthing-java for the compilation of syncthing-lite?

--- a/app/build.gradle
+++ b/app/build.gradle
@@ -31,7 +31,8 @@ dependencies {
     implementation "com.android.support:support-v4:$support_version"
     implementation "com.android.support:design:$support_version"
     implementation "com.android.support:cardview-v7:$support_version"
-    implementation ("com.github.Nutomic:syncthing-java:0.1") {
+    implementation (project(":syncthing-java")) {
+//        implementation ("com.github.Nutomic:syncthing-java:0.1") {
         exclude group: 'commons-logging', module:'commons-logging'
         exclude group: 'commons-codec'
         exclude group: 'org.apache.httpcomponents', module:'httpclient'
diff --git a/settings.gradle b/settings.gradle
index e7b4def..f806233 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1,3 @@
 include ':app'
+include "syncthing-java"
+project(":syncthing-java").projectDir = new File("../syncthing-java")

(Felix Ableitner) #6

You can just run gradle install in the syncthing-java folder. That will install it to your local maven repository, and syncthing-lite will use that automatically when you compile it. Will add that to the description.

Edit: You can also use the command line client in syncthing-java (check the readme).


(Felix Ableitner) #7

This topic was automatically closed after 7 days. New replies are no longer allowed.


(Felix Ableitner) #8

I have recently finished converting the library to Kotlin, so it might be possible to use it on iOS with Kotlin/Native. Maybe there is an iOS developer who wants to look into this?


(Felix Ableitner) #9

(Jakob Borg) #10