From 02958c9aff067e18b27598a2f8b86ac9a1abd95a Mon Sep 17 00:00:00 2001 From: Gavin Corkery Date: Tue, 9 Nov 2021 10:40:32 +0000 Subject: [PATCH] Start SupplementalProcessManagerService Calls the SupplementalProcessFrameworkInitializer to register the supplemental process service. This service is started from SystemServer. Test: Manual. Check logcat to ensure service has started Bug: 204989700 Change-Id: Iaafb45fcc0d0be2c15bb6a6206114d59fe4bbf17 --- core/api/current.txt | 1 + core/java/android/app/SystemServiceRegistry.java | 2 ++ core/java/android/content/Context.java | 8 ++++++++ services/java/com/android/server/SystemServer.java | 11 +++++++++++ 4 files changed, 22 insertions(+) diff --git a/core/api/current.txt b/core/api/current.txt index 7370af382b142..e32ea7774b453 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -10792,6 +10792,7 @@ package android.content { field public static final String STATUS_BAR_SERVICE = "statusbar"; field public static final String STORAGE_SERVICE = "storage"; field public static final String STORAGE_STATS_SERVICE = "storagestats"; + field public static final String SUPPLEMENTAL_PROCESS_SERVICE = "supplemental_process"; field public static final String SYSTEM_HEALTH_SERVICE = "systemhealth"; field public static final String TELECOM_SERVICE = "telecom"; field public static final String TELEPHONY_IMS_SERVICE = "telephony_ims"; diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index fc40179890b66..74e28581717d5 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -204,6 +204,7 @@ import android.service.oemlock.OemLockManager; import android.service.persistentdata.IPersistentDataBlockService; import android.service.persistentdata.PersistentDataBlockManager; import android.service.vr.IVrManager; +import android.supplementalprocess.SupplementalProcessFrameworkInitializer; import android.telecom.TelecomManager; import android.telephony.MmsManager; import android.telephony.TelephonyFrameworkInitializer; @@ -1527,6 +1528,7 @@ public final class SystemServiceRegistry { MediaFrameworkInitializer.registerServiceWrappers(); RoleFrameworkInitializer.registerServiceWrappers(); SchedulingFrameworkInitializer.registerServiceWrappers(); + SupplementalProcessFrameworkInitializer.registerServiceWrappers(); UwbFrameworkInitializer.registerServiceWrappers(); } finally { // If any of the above code throws, we're in a pretty bad shape and the process diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 665f626030bbc..39b6bf4961629 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -3813,6 +3813,7 @@ public abstract class Context { //@hide: SPEECH_RECOGNITION_SERVICE, UWB_SERVICE, MEDIA_METRICS_SERVICE, + SUPPLEMENTAL_PROCESS_SERVICE, }) @Retention(RetentionPolicy.SOURCE) public @interface ServiceName {} @@ -5828,6 +5829,13 @@ public abstract class Context { */ public static final String LOCALE_SERVICE = "locale"; + /** + * Use with {@link #getSystemService(String)} to retrieve a Supplemental Process Manager. + * + * @see #getSystemService(String) + */ + public static final String SUPPLEMENTAL_PROCESS_SERVICE = "supplemental_process"; + /** * Determine whether the given permission is allowed for a particular * process and user ID running in the system. diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index b44b692bce129..45cdba50f6767 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -395,6 +395,11 @@ public final class SystemServer implements Dumpable { "/apex/com.android.uwb/javalib/service-uwb.jar"; private static final String UWB_SERVICE_CLASS = "com.android.server.uwb.UwbService"; + private static final String SUPPLEMENTALPROCESS_APEX_PATH = + "/apex/com.android.supplementalprocess/javalib/service-supplementalprocess.jar"; + private static final String SUPPLEMENTALPROCESS_SERVICE_CLASS = + "com.android.server.supplementalprocess.SupplementalProcessManagerService$Lifecycle"; + private static final String TETHERING_CONNECTOR_CLASS = "android.net.ITetheringConnector"; private static final String PERSISTENT_DATA_BLOCK_PROP = "ro.frp.pst"; @@ -2537,6 +2542,12 @@ public final class SystemServer implements Dumpable { mSystemServiceManager.startService(IncidentCompanionService.class); t.traceEnd(); + // Supplemental Process + t.traceBegin("StartSupplementalProcessManagerService"); + mSystemServiceManager.startServiceFromJar(SUPPLEMENTALPROCESS_SERVICE_CLASS, + SUPPLEMENTALPROCESS_APEX_PATH); + t.traceEnd(); + if (safeMode) { mActivityManagerService.enterSafeMode(); }