summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Sharkey <jsharkey@google.com> 2015-08-04 23:46:40 +0000
committer Android Git Automerger <android-git-automerger@android.com> 2015-08-04 23:46:40 +0000
commit026457a41bf6c5373cba42004c4b5b0f57f54abd (patch)
treeddd290358cf67c5dab684e9da112283d67af5afa
parentc3080d7855838bcbe070bddd083a5736687f130b (diff)
parent64e26348bcb0f6282b71ff3577521d131f765a56 (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.java28
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;