OSDN Git Service

Prepare app data only when storage is available.
authorJeff Sharkey <jsharkey@android.com>
Thu, 14 Jan 2016 01:52:55 +0000 (18:52 -0700)
committerJeff Sharkey <jsharkey@android.com>
Fri, 15 Jan 2016 23:01:17 +0000 (16:01 -0700)
commit0e62384ccbd00e9f78851929ca88b919679ee32e
treedb18d157e9b10faf06cd2239243446c993b5c61f
parentab3bdf09841eedded9a29569b59ccabeb577abb6
Prepare app data only when storage is available.

Before this change, scanning a package aggressively tried checking
to ensure that private app data was prepared.  However, in an FBE
world we may not have access to that data at scan time.  So this
change shifts the preparing of private app data until later: it
prepares DE storage when a user is started, and CE storage when a
user is unlocked.  Wire ourselves into the user lifecycle so we can
prepare storage at both user start and unlock.

When DE/CE storage becomes available, this change reconciles any
found packages against known installed apps, and deletes any orphaned
data directories.

We now need to store the last-restorecon hash in an xattr on a
per-user directory basis, since we can't restorecon CE storage until
it's unlocked, or adopted storage until it's mounted.  Remove a
bunch of used logic for loading dynamic SELinux policy at runtime;
our policy always comes from the system image.

Bug: 2646682726544104
Change-Id: I8d0a4ef862c35f4e4ef5c7f20d3bb8f12ba3fd4b
core/java/android/os/UserManager.java
services/core/java/com/android/server/am/ActivityManagerService.java
services/core/java/com/android/server/am/UserController.java
services/core/java/com/android/server/pm/Installer.java
services/core/java/com/android/server/pm/PackageManagerException.java
services/core/java/com/android/server/pm/PackageManagerService.java
services/core/java/com/android/server/pm/SELinuxMMAC.java
services/core/java/com/android/server/pm/Settings.java
services/core/java/com/android/server/pm/UserManagerService.java