diff options
| author | 2015-08-04 23:46:40 +0000 | |
|---|---|---|
| committer | 2015-08-04 23:46:40 +0000 | |
| commit | 026457a41bf6c5373cba42004c4b5b0f57f54abd (patch) | |
| tree | ddd290358cf67c5dab684e9da112283d67af5afa | |
| parent | c3080d7855838bcbe070bddd083a5736687f130b (diff) | |
| parent | 64e26348bcb0f6282b71ff3577521d131f765a56 (diff) | |
am 64e26348: am 0d616883: Merge "Fix moving of apps into legacy ASEC." into mnc-dev
* commit '64e26348bcb0f6282b71ff3577521d131f765a56':
Fix moving of apps into legacy ASEC.
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 1d56a0ca0b70..0a98d4189873 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -15814,16 +15814,27 @@ public class PackageManagerService extends IPackageManager.Stub { "Cannot move system application"); } - if (Objects.equals(ps.volumeUuid, volumeUuid)) { - throw new PackageManagerException(MOVE_FAILED_INTERNAL_ERROR, - "Package already moved to " + volumeUuid); + if (pkg.applicationInfo.isExternalAsec()) { + currentAsec = true; + currentVolumeUuid = StorageManager.UUID_PRIMARY_PHYSICAL; + } else if (pkg.applicationInfo.isForwardLocked()) { + currentAsec = true; + currentVolumeUuid = "forward_locked"; + } else { + currentAsec = false; + currentVolumeUuid = ps.volumeUuid; + + final File probe = new File(pkg.codePath); + final File probeOat = new File(probe, "oat"); + if (!probe.isDirectory() || !probeOat.isDirectory()) { + throw new PackageManagerException(MOVE_FAILED_INTERNAL_ERROR, + "Move only supported for modern cluster style installs"); + } } - final File probe = new File(pkg.codePath); - final File probeOat = new File(probe, "oat"); - if (!probe.isDirectory() || !probeOat.isDirectory()) { + if (Objects.equals(currentVolumeUuid, volumeUuid)) { throw new PackageManagerException(MOVE_FAILED_INTERNAL_ERROR, - "Move only supported for modern cluster style installs"); + "Package already moved to " + volumeUuid); } if (ps.frozen) { @@ -15832,9 +15843,6 @@ public class PackageManagerService extends IPackageManager.Stub { } ps.frozen = true; - currentAsec = pkg.applicationInfo.isForwardLocked() - || pkg.applicationInfo.isExternalAsec(); - currentVolumeUuid = ps.volumeUuid; codeFile = new File(pkg.codePath); installerPackageName = ps.installerPackageName; packageAbiOverride = ps.cpuAbiOverrideString; |