Commit graph

1156 commits

Author SHA1 Message Date
Torsten Grote
83fd0ba5d1
Upgrade all the binary dependencies we include
Since this is for Android 15 and the new v2 format, this is a good time for upgrading, because we need to test the app extensively anyway.
2024-10-10 13:42:19 -03:00
Torsten Grote
03d2946c93
Remove setting for unlimited quota
we set a hard limit for 1 GiB per app for now, but leave code in to make it configurable in the future
2024-10-10 13:42:19 -03:00
Torsten Grote
176a703720
Offer option to recycle backup after restoring
The most common restore scenario is assumed to be moving from one device to another, like when the old one was lost or stolen. Most users probably don't continue to use the old device themselves still.
Since they just restored this backup on their phone, most data is already in this backup. Deduplication allows re-using that, so it doesn't need to be saved again.
2024-10-10 13:42:19 -03:00
Torsten Grote
20ea0b332d
Delete repo and exit process when key changes
There is no easy way to re-initialize all data based on the old key, so to prevent usage of the old key we need to exit our process. When the app is started again, only the new key will be used.
2024-10-10 13:42:19 -03:00
Torsten Grote
62991ed38b
Move app backup to expert settings 2024-10-10 13:42:19 -03:00
Torsten Grote
9de1d2472b
Remove D2D setting, it is now always on 2024-10-10 13:42:18 -03:00
Torsten Grote
fe8d458890
Always use SnapshotManager to load snapshots to benefit from cache 2024-10-10 13:42:18 -03:00
Torsten Grote
a1baa6f9d2
Implement pruning of old snapshots and unused blobs
This happens regularly after each successful backup.
2024-10-10 13:42:18 -03:00
Torsten Grote
307ccf57de
Move new classes to repo package
as they all relate to interacting with the backup repository
2024-10-08 19:38:15 -03:00
Torsten Grote
32e116ffe1
Polish AppBackupManager and write tests 2024-10-08 19:38:14 -03:00
Torsten Grote
7702fb7bd8
Polish SnapshotCreator and write tests 2024-10-08 19:38:14 -03:00
Torsten Grote
463fc33230
Log memory and when system calls App#onTrimMemory() 2024-10-08 19:38:14 -03:00
Torsten Grote
f188230269
Add padding to all blobs using the Padmé algorithm 2024-10-08 19:38:14 -03:00
Torsten Grote
52f528dbf0
Fully implement BackupReceiver and write tests 2024-10-08 19:38:14 -03:00
Torsten Grote
538d794d8d
Don't uninstall the app and clear data after instrumentation tests 2024-10-08 19:38:14 -03:00
Torsten Grote
dd5180f3b7
Polish BlobCreator and extend its test 2024-10-08 19:38:13 -03:00
Torsten Grote
237fd683bd
Clean up metadata as it lost most of its importance
Historically, metadata was uploaded to the backend after each app update and contained all essential data that is now in snapshots. We still support reading metadata for legacy backups and use the metadata classes as a common wrapper for snapshots. However, there is no need anymore to write out complete historic metadata and maintain duplicated unused information there. This got removed. THe information we do still save and write out is only for UI representation of backup state.

The time of last backup is now managed by SettingsManager.
2024-10-08 19:38:13 -03:00
Torsten Grote
a268116e06
Remove warnings when choosing backup location in UI 2024-10-08 19:36:05 -03:00
Torsten Grote
bfa17fa5ec
Fully implement SnapshotManager
which manages interactions with snapshots, such as loading, saving and removing them.
It also keeps a reference to the latestSnapshot that holds important re-usable data.
2024-10-08 19:36:05 -03:00
Torsten Grote
952cdec55d
Fully implement BlobCache
This class is responsible for caching blobs during a backup run,
so we can know that a blob for the given chunk ID already exists
and does not need to be uploaded again.

It builds up its cache from snapshots available on the backend
and from the persistent cache that includes blobs that could not be added to a snapshot,
because the backup was aborted.
2024-10-08 19:36:05 -03:00
Torsten Grote
5b567c79a2
Also snapshot unchanged APKs 2024-10-08 19:36:05 -03:00
Torsten Grote
cacea886b0
Simplify transport init and token handling
The token used to be very important, because it was our restore set folder name. Now it is just a number in a snapshot, so things get a bit simpler.
2024-10-08 19:36:05 -03:00
Torsten Grote
3c4b4f705c
Remove hack of @pm@ backup when initializing transport
as it isn't needed anymore with v2 since we don't do duplicate restore sets anymore
2024-10-08 19:36:04 -03:00
Torsten Grote
7f9e84fdb6
Stop writing out old metadata to backend
We'll probably keep metadata around for internal information about backup state
2024-10-08 19:36:04 -03:00
Torsten Grote
c2ad309f93
K/V backup and restore using v2
while maintaining support for v0 and v1
2024-10-08 19:36:04 -03:00
Torsten Grote
7c7ea5fcd7
Full backup and restore using v2
while maintaining support for v0 and v1
2024-10-08 19:36:04 -03:00
Torsten Grote
83708d9403
Prepare restore backup loading for v2 2024-10-08 19:36:03 -03:00
Torsten Grote
8ce79f4195
Add protobuf-kotlin-lite and use new builders 2024-10-08 19:36:03 -03:00
Torsten Grote
897ae48b44
Back up app APKs in new v2 format
We still support restoring in v1 format for some time.
2024-10-08 19:36:03 -03:00
Torsten Grote
e17c98857f
Back up app icons in new v2 format
We still support downloading in v1 format for some time.
2024-10-08 19:36:03 -03:00
Torsten Grote
1efa8e8f59
Add prototype plumbing for new v2 app backup 2024-10-08 19:36:03 -03:00
Torsten Grote
e6905c0365
Move tink library into core module and expose via CoreCrypto
This also moves key derivation via HKDF into the core.
2024-10-08 19:36:03 -03:00
Torsten Grote
c19787a7fa
Prepare backends for new app backup repository 2024-10-08 19:36:02 -03:00
Torsten Grote
d2df088f2c
Add zstd-jni library 2024-10-08 19:36:02 -03:00
Torsten Grote
cb68f75eb6
remove kotlin protobuf as its not in aosp 2024-10-08 19:36:02 -03:00
Torsten Grote
b2307d94dd
Add protobuf definitions for snapshot 2024-10-08 19:36:02 -03:00
Torsten Grote
75797f93e7
add readme for app dedup research 2024-10-08 19:36:02 -03:00
Torsten Grote
0ae1f0ce7d
fix broken link in files backup docs 2024-10-08 19:36:01 -03:00
Torsten Grote
a9df9a2d2f
Merge pull request #771 from grote/770-backup-start
Unify code to start new backup
2024-10-08 18:21:15 -03:00
Torsten Grote
d6572979cc
Unify code to start new backup
to ensure that files backup and app backup will always run if they should
2024-10-08 16:13:12 -03:00
Torsten Grote
5498e838db
Merge pull request #764 from grote/697-receivery-code-crash
Trim white-spaces from recovery code words
2024-10-07 11:09:26 -03:00
Torsten Grote
4bad79a924
Merge pull request #772 from grote/769-tiktok
Also show TikTok in Backup status
2024-10-07 11:09:03 -03:00
Torsten Grote
3601494b06
Also show TikTok in Backup status
The apps ships an instrumentation configuration which we've so far only soon for instrumentation test dev apps. Now, we do more checks to identify those.
2024-10-07 10:47:27 -03:00
Torsten Grote
5f8e85944a
Merge pull request #767 from t-m-w/fix-title-of-restore-notification-channel
Fix title of restore notification channel
2024-10-04 09:30:09 -03:00
t-m-w
a27ef47294
Fix title of restore notification channel
The restore foreground service notification uses the restore channel, which was inadvertently using the title from the error channel, showing "Auto restore flash drive error" when tapping and holding on the notification, and showing that channel name twice in the notification settings.
2024-10-03 16:09:25 -04:00
Torsten Grote
542a79e2e1
Trim white-spaces from recovery code words 2024-10-03 14:09:39 -03:00
Torsten Grote
f2aec3f932
Merge pull request #747 from theimpulson/a15
Support edge to edge
2024-09-20 14:03:29 -03:00
Torsten Grote
cf7953edf7
Merge pull request #734 from grote/unified-backends
Unify Storage Backends
2024-09-19 13:52:34 -03:00
Aayush Gupta
b9b7c96063 Support edge to edge
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2024-09-18 20:21:09 +05:30
Torsten Grote
78ef0caea7
clean up libs and fix AOSP build 2024-09-12 09:34:00 -03:00