From 553acf0409619ccde09332fb8af3e0b5c7cc4752 Mon Sep 17 00:00:00 2001 From: Ben Komalo Date: Mon, 19 Sep 2011 14:25:28 -0700 Subject: [PATCH] Only run "core" apps when encrypting device. This forces the package manager to only read packages that have coreApp="true" in their manifest when encrypting the device, since no non-essential processes or applications should run in that time. Bug: 5031399 Change-Id: I87e8b27703e42553940167858db9473705d5d843 --- services/java/com/android/server/SystemServer.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 7e28c4f1b26a5..977dd6f5d54f8 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -64,6 +64,7 @@ import java.util.TimerTask; class ServerThread extends Thread { private static final String TAG = "SystemServer"; + private static final String ENCRYPTING_STATE = "trigger_restart_min_framework"; ContentResolver mContentResolver; @@ -147,9 +148,15 @@ class ServerThread extends Thread { AttributeCache.init(context); Slog.i(TAG, "Package Manager"); + // Only run "core" apps if we're encrypting the device. + String cryptState = SystemProperties.get("vold.decrypt"); + boolean onlyCore = ENCRYPTING_STATE.equals(cryptState); + if (onlyCore) { + Slog.w(TAG, "Detected encryption in progress - only parsing core apps"); + } pm = PackageManagerService.main(context, factoryTest != SystemServer.FACTORY_TEST_OFF, - false); + onlyCore); ActivityManagerService.setSystemProcess();