From 133c5da0d972ff8f1676890679f478aa30e08dfd Mon Sep 17 00:00:00 2001 From: Todd Kennedy Date: Thu, 15 Jun 2017 09:44:34 -0700 Subject: [PATCH] enable/disable dexopt for instant apps remotely Change-Id: I997b8ae515f7bf2570edca4ed7ab4b46198148a5 Fixes: 62591398 Test: Manual; install instant app and see that it doesn't dexopt Test: Manua; update gservices flag, install instant app and see that it does dexopt --- core/java/android/provider/Settings.java | 10 ++++++++++ .../com/android/server/pm/PackageManagerService.java | 6 ++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index f1ce9d52e920f..77bb0e4ffa7c2 100755 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -9817,6 +9817,16 @@ public final class Settings { */ public static final String ENABLE_EPHEMERAL_FEATURE = "enable_ephemeral_feature"; + /** + * Toggle to enable/disable dexopt for instant applications. The default is for dexopt + * to be disabled. + *

+ * Type: int (0 to disable, 1 to enable) + * + * @hide + */ + public static final String INSTANT_APP_DEXOPT_ENABLED = "instant_app_dexopt_enabled"; + /** * The min period for caching installed instant apps in milliseconds. *

diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index e62b107b56f9c..4f987c1de3c3c 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -18160,8 +18160,10 @@ public class PackageManagerService extends IPackageManager.Stub // step during installation. Instead, we'll take extra time the first time the // instant app starts. It's preferred to do it this way to provide continuous // progress to the user instead of mysteriously blocking somewhere in the - // middle of running an instant app. - if (!instantApp) { + // middle of running an instant app. The default behaviour can be overridden + // via gservices. + if (!instantApp || Global.getInt( + mContext.getContentResolver(), Global.INSTANT_APP_DEXOPT_ENABLED, 0) != 0) { Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "dexopt"); // Do not run PackageDexOptimizer through the local performDexOpt // method because `pkg` may not be in `mPackages` yet.