diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index b32ece710a666..0b37fdb1680da 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -3592,6 +3592,21 @@ public final class ActiveServices { } } + public void updateServiceApplicationInfoLocked(ApplicationInfo applicationInfo) { + final int userId = UserHandle.getUserId(applicationInfo.uid); + ServiceMap serviceMap = mServiceMap.get(userId); + if (serviceMap != null) { + ArrayMap servicesByName = serviceMap.mServicesByName; + for (int j = servicesByName.size() - 1; j >= 0; j--) { + ServiceRecord serviceRecord = servicesByName.valueAt(j); + if (applicationInfo.packageName.equals(serviceRecord.appInfo.packageName)) { + serviceRecord.appInfo = applicationInfo; + serviceRecord.serviceInfo.applicationInfo = applicationInfo; + } + } + } + } + void serviceForegroundCrash(ProcessRecord app, CharSequence serviceRecord) { mAm.crashApplication(app.uid, app.pid, app.info.packageName, app.userId, "Context.startForegroundService() did not then call Service.startForeground(): " diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index cddda58f9c1aa..70648c6d3cbb9 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -21455,6 +21455,7 @@ public class ActivityManagerService extends IActivityManager.Stub return ActivityManager.BROADCAST_SUCCESS; } mStackSupervisor.updateActivityApplicationInfoLocked(aInfo); + mServices.updateServiceApplicationInfoLocked(aInfo); sendPackageBroadcastLocked(ApplicationThreadConstants.PACKAGE_REPLACED, new String[] {ssp}, userId); } diff --git a/services/core/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java index 32887e400903c..4d89d015b6694 100644 --- a/services/core/java/com/android/server/am/ServiceRecord.java +++ b/services/core/java/com/android/server/am/ServiceRecord.java @@ -73,7 +73,7 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN // original intent used to find service. final ServiceInfo serviceInfo; // all information about the service. - final ApplicationInfo appInfo; + ApplicationInfo appInfo; // information about service's app. final int userId; // user that this service is running as final String packageName; // the package implementing intent's component