1
0
Fork 0
mirror of https://github.com/syncthing/syncthing-android.git synced 2025-01-07 10:42:07 +00:00
Wrapper of syncthing for Android.
Find a file
Catfriend1 190826e660
Refactor ConfigXml (#135)
Changelog:
- "Use default folder path given in config.xml" (#101)
- "IllegalStateException: Fragment already added" (#108)
- "Enhancement request for per-folder(device) sync conditions" (#110)
- "NPE crash after key and config regeneration" (#141)
- "Adjust the folder icon to show if it's send/receive or both" (#143)
- "CPU percentage is not shown on the status tab" (#144)
- "Always make individual sync conditions UI available" (#145)
- "IntroducedBy deviceID lost on config change through wrapper UI" (#146)
- "Wrapper doesn't use the same syntax as syncthing core's web UI for device addresses" (#147)
- "Syncthing wrapper "emergency" shutdown on native binary crash doesn't work" (#148)

Commits:

* WIP

* WIP

* Get folder list and paused setting when syncthing is not running

Preparation to solve #110

* Fix NPE in DeviceListFragment#DEVICES_COMPARATOR

* Remove blank line

* Add ConfigXml#getDevices and comparator

Make ConfigXml#saveChanges public

* SyncthingService evaluates per folder/device

sync conditions when syncthing is not running via ConfigXml

* Fix typos and add stubs

* Fix build errors

* DEBUG - Always run syncthing binary

* Fix NPE at RunConditionMonitor pointer

* Add setFolderPause, setDevicePause

to ConfigXml

* Improve logging

* Remove test mode

* Better log levels

* Make ConfigXml#updateIfNeeded private

* Remove SyncthingService#mStartupTask

AsyncTask no longer needed

* Update model/Options (fixes #101)

* Fix NPE after config regeneration (fixes #140)

* Refactor key and config generation

Refactor ConfigXml public functions to allow checking if a valid config exists and trigger key and config (re)genration if something is corrupted.

* Fix crash on export/import (fixes #142)

* ApiRequest - Disable verbose log in release builds

* ConfigXml#updateIfNeeded - Disable "startBrowser"

because it applies to desktop environments and cannot start a mobile browser app

* MainActivity - Always show all tabs

* Show folder/device tab contents from config.xml

if syncthing is not running

* Update ConfigXml#getDevices return model

- compression
- introducer

* Device tab - Hide in/out rate if syncthing is not running

 or if the device is paused

* Update device item layout

* MainActivity/Devices - Prevent showing outdated status

after syncthing core transitioned from "active" to "disabled"

* MainActivity/Folders - Prevent showing outdated status

after syncthing core transitioned from "active" to "disabled"

* Add ConfigRouter class

Provides a transparent access to the config if ...
a) Syncthing is running and REST API is available.
b) Syncthing is NOT running and config.xml is accessed.

* Add pref - Cache local device ID

* Allow excluding self in ConfigRouter#getDevices

* Allow excluding self in ConfigRouter#getDevices (2)

* Update Folder model default values

* Update Folder model defaults (2)

- copiers
- hashers

* WIP - ConfigXml - FolderActivity

Remove unused pref inject code
Cache local device ID in pref
Reduce verbose logging in release builds
Extend ConfigXml#getFolders
Extend ConfigXml#getDevices
Fix ConfigXml#setDevicePause

ToDo ConfigXml#getFolderIgnoreList needs to be implemented

* Implemented ConfigXml#getFolderIgnoreList

* Extend ConfigXml#getDevices

- device.addresses

* WIP - DeviceActivity

Make it available when syncthing is not running

* Fix unsuccessful API bumps while syncthing is starting

* Fix space

* Adjust the folder icon to show if it's send/receive or both (fixes #143)

* Fix lint - item_device_list

* Preserve active tab when syncthing core transitions between running and not running

* Add xmlns:android to item_folder_list

* Remove unused reference from item_folder_list

* Add device icon to device tab

* Fix CPU percentage not showing (fixes #144)

* SyncthingService - Polish iterator code

* Fix MainActivity#updateViewPager (fixes #108)

* Add ConfigXml#updateFolder, updateDevice (1)

* Add ConfigRouter#updateFolder, updateDevice

* Add missing "final" to ConfigXml#updateDevice

* WIP - FolderActivity - Update updateFolder via ConfigRouter

ToDo: Implement ConfigRouter here.

* ConfigRouter - Fix missing return

* DeviceActivity - Update device via ConfigRouter

* Always make individual sync conditions UI available (fixes #145)

regardless if syncthing core is running or not.
Remove SyncthingService dependency from SyncConditionsActivity

* Fix incorrect folder type icon shown

when syncthing core is not running

* Add "introducedBy" to folder and device model (fixes #146)

* Add Folder#getDevices to model

* ConfigXml#updateFolder - Writeback devices sharing the folder

Support preserving the "introducedBy" model field of Folder.java (fixes #146)

* Add ConfigXml#updateFolder - Versioning

* Remove SyncthingService dependency from FolderPickerActivity

because it is no longer required.

* Update ToDo remarks

* Add ConfigXml#updateDevice - Addresses

* Fix DeviceActivity#persistableAddresses to be more graceful (fixes #147)

and accept the same address syntax as syncthing core web UI does.

* Add ConfigXml#removeFolder, removeDevice

* Add ConfigXml#addDevice, addFolder

- Add ConfigXml#isDeviceIdValid
- Do not allow adding empty folder labels or empty device names.
- Update model Folder.java so ConfigXml can handle the ignorePerms XML attribute

* Fix Syncthing wrapper "emergency" shutdown on native binary crash (fixes #148)

* Update translation de

* Add ConfigXml#postFolderIgnoreList

* Update APK version to 0.14.54.3 / 4182

* Revert DEBUG - Always run syncthing binary

* Update whatsnew
2018-12-22 01:58:44 +01:00
.tx Create Transifex config (#28) 2018-08-25 01:24:52 +02:00
app Refactor ConfigXml (#135) 2018-12-22 01:58:44 +01:00
docker Move build script to python (#1184) 2018-07-18 00:17:58 +01:00
fdroiddata/metadata Update fork description and readme (fixes #99) (#120) 2018-11-23 08:35:39 +01:00
gradle/wrapper Update build tools to 28.0.3 / gradle 4.6 2018-10-27 15:09:05 +02:00
graphics Integrate gradle plugin for translation uploads (fixes #408, #463). 2015-11-16 22:10:00 +01:00
syncthing Update syncthing core to v0.14.54 2018-12-05 19:39:20 +01:00
.gitignore Fix service.startForeground on Android 8+ (fixes #18) (fixes #80) (#79) 2018-10-08 05:00:59 +02:00
.gitmodules Revert "Revert build script changes" 2017-10-24 14:55:28 +09:00
.travis.yml Fix Android Studio 3.1.3 build-tool warnings (#1131) 2018-06-12 18:28:03 +01:00
build.gradle Update build tools to 28.0.3 / gradle 4.6 2018-10-27 15:09:05 +02:00
build_submodule.cmd Add automastic fallback to http on Android 4.x (fixes #137) (fixes #139) (#138) 2018-12-16 10:44:55 +01:00
CONTRIBUTING.md Update CONTRIBUTING.md 2018-08-19 23:42:56 +02:00
git_fetch_branch.sh Import translations / Force lint checks before build (#132) 2018-11-29 22:16:51 +01:00
git_update_submodule.cmd Add automastic fallback to http on Android 4.x (fixes #137) (fixes #139) (#138) 2018-12-16 10:44:55 +01:00
gradlew Updated dependencies 2017-11-13 09:46:29 +09:00
gradlew.bat Updated gradle 2017-01-26 11:38:17 +09:00
ISSUE_TEMPLATE.md Update ISSUE_TEMPLATE.md 2018-08-19 23:41:39 +02:00
LICENSE Change license to MPLv2. 2015-03-17 22:27:50 +01:00
prepare-release.bash Import translations (#29) 2018-08-25 02:21:28 +02:00
publish-release.sh Add automastic fallback to http on Android 4.x (fixes #137) (fixes #139) (#138) 2018-12-16 10:44:55 +01:00
README.md Add automastic fallback to http on Android 4.x (fixes #137) (fixes #139) (#138) 2018-12-16 10:44:55 +01:00
settings.gradle Revert "Revert build script changes" 2017-10-24 14:55:28 +09:00

Fork of Syncthing-Android:

License: MPLv2

Major enhancements in this fork are:

  • Individual sync conditions can be applied per device and per folder (for expert users).
  • Recent changes UI, click to open files.
  • UI explains why syncthing is running or not running according to the run conditions set in preferences.
  • "Battery eater" problem is fixed.
  • Android 8 and 9 support.
  • Many bug fixes, enhancements and more frequent releases.

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

Please participate in quality assurance testing

See https://github.com/Catfriend1/syncthing-android/issues/122 for more details and QA builds.

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

Translations

The project is translated on Transifex.

Building

Prerequisites

  • Android SDK You can skip this if you are using Android Studio.
  • Android NDK r16b $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.9.7 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 2.7 Make sure, Python is installed and available on the PATH environment variable.
  • 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 Version 8 (you might need to set $JAVA_HOME accordingly)

Build instructions

Make sure you clone the project with git clone https://github.com/Catfriend1/syncthing-android.git --recursive. Alternatively, run git submodule init && git submodule update in the project folder.

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

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

./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

License

The project is licensed under the MPLv2.