a091142a3f
Restore app data in smaller batches when performing a full restoration from a backup set, to prevent a Binder exception that causes the process to fail entirely. Android may encounter this exception when trying to call the transport.startRestore() method if too many packages are involved; in testing, 300 is an example of too many. Instead of using IRestoreSession.restoreAll(), use restorePackages() and provide the package names in batches of 100. This issue reveals itself when using SeedVault with the D2D patch and with an OS, such as stock Pixel OS, that includes an abundance of packages. (Prior to this patch, the call to restoreAll() meant that the framework would request data restoration for all packages installed, even if they were not in the metadata.) In logs, this issue appears as follows: ``` I BackupManagerService: Full restore; asking about 300 apps W BpBinder: Large outgoing transaction of 528540 bytes, interface descriptor <uncached descriptor>, code 14 E JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 528540) E BackupManagerService: Unable to contact transport for restore: data parcel size 528540 bytes ``` Change-Id: Ibb5bb4572d9e873beccd6056da5fe3ae4dce71c2 |
||
---|---|---|
.. | ||
development | ||
libs | ||
src | ||
build.gradle.kts | ||
lint.xml |