diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 6acd66523c552..65d6eb9762f5c 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -292,9 +292,9 @@ public final class ActivityThread { } public PackageInfo(ActivityThread activityThread, String name, - Context systemContext) { + Context systemContext, ApplicationInfo info) { mActivityThread = activityThread; - mApplicationInfo = new ApplicationInfo(); + mApplicationInfo = info != null ? info : new ApplicationInfo(); mApplicationInfo.packageName = name; mPackageName = name; mAppDir = null; @@ -2202,7 +2202,7 @@ public final class ActivityThread { if (mSystemContext == null) { ApplicationContext context = ApplicationContext.createSystemContext(this); - PackageInfo info = new PackageInfo(this, "android", context); + PackageInfo info = new PackageInfo(this, "android", context, null); context.init(info, null, this); context.getResources().updateConfiguration( getConfiguration(), getDisplayMetricsLocked(false)); @@ -2214,6 +2214,13 @@ public final class ActivityThread { return mSystemContext; } + public void installSystemApplicationInfo(ApplicationInfo info) { + synchronized (this) { + ApplicationContext context = getSystemContext(); + context.init(new PackageInfo(this, "android", context, info), null, this); + } + } + void scheduleGcIdler() { if (!mGcIdlerScheduled) { mGcIdlerScheduled = true; diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 961796c6843e3..02f91c4a38f3b 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -1221,6 +1221,8 @@ public final class ActivityManagerService extends ActivityManagerNative implemen ApplicationInfo info = mSelf.mContext.getPackageManager().getApplicationInfo( "android", STOCK_PM_FLAGS); + mSystemThread.installSystemApplicationInfo(info); + synchronized (mSelf) { ProcessRecord app = mSelf.newProcessRecordLocked( mSystemThread.getApplicationThread(), info,