Add storage library (and demo app)

and use for periodic files backup
179 files changed
tree: e68fe8e3a91fe550423841d322b2e387b776b074
  1. .github/
  2. .idea/
  3. app/
  4. contactsbackup/
  5. gradle/
  6. libs/
  7. storage/
  8. .editorconfig
  9. .gitignore
  10. Android.bp
  11. build.gradle
  12. CHANGELOG.md
  13. gradle.properties
  14. gradlew
  15. gradlew.bat
  16. LICENSE
  17. logcat-verbose.sh
  18. permissions_com.stevesoltys.seedvault.xml
  19. README.md
  20. settings.gradle
  21. whitelist_com.stevesoltys.seedvault.xml
README.md

Seedvault

Build

A backup application for the Android Open Source Project.

Features

  • Backup application data to a flash drive.
  • Restore application data from a flash drive.
  • User-friendly encryption using a mnemonic phrase (BIP39).
  • Automatic daily backups that run in the background.

Requirements

  • Android 11

For older versions of Android, check out the branches.

Getting Started

  • Check out the wiki for information on building the application with AOSP.

What makes this different?

This application is compiled with the operating system and does not require a rooted device for use. It uses the same internal APIs as adb backup which is deprecated and thus needs a replacement.

Permissions

  • android.permission.BACKUP to back up application data.
  • android.permission.ACCESS_NETWORK_STATE to check if there is internet access when network storage is used.
  • android.permission.MANAGE_USB to access the serial number of USB mass storage devices.
  • android.permission.WRITE_SECURE_SETTINGS to change system backup settings and enable call log backup.
  • android.permission.QUERY_ALL_PACKAGES to get information about all installed apps for backup.
  • android.permission.INSTALL_PACKAGES to re-install apps when restoring from backup.
  • android.permission.MANAGE_EXTERNAL_STORAGE to backup and restore files from device storage.
  • android.permission.ACCESS_MEDIA_LOCATION to backup original media files e.g. without stripped EXIF metadata.
  • android.permission.FOREGROUND_SERVICE to do periodic storage backups without interruption.
  • android.permission.MANAGE_DOCUMENTS to retrieve the available storage roots (optional) for better UX.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/seedvault-app/seedvault.

This project aims to adhere to the official Kotlin coding style.

Third-party tools

The Seedvault backup parser allows you to decrypt and inspect your backups. It can also re-encrypt them.

License

This application is available as open source under the terms of the Apache-2.0 License.