From ae70354d1f37a11c5fcfd7d32d53165614b8e3d7 Mon Sep 17 00:00:00 2001 From: Isaac Chen Date: Mon, 6 Apr 2020 12:15:03 +0800 Subject: [PATCH] Enable System User Home for CSI Core system image (CSI) doesn't have Launcher or Settings so no home activity, but still needs to boot properly. This change enables the fallback home activity, SystemUserHome, in the framework for CSI. Bug: 149307007 Bug: 149780604 Test: $ lunch csi_arm64-userdebug; m # flash the system.img built to crosshatch $ atest DeviceHealthTests Change-Id: I0f999f76e23c6316f6d5d0741a1116028e34a0ab Merged-In: I0f999f76e23c6316f6d5d0741a1116028e34a0ab --- .../internal/app/SystemUserHomeActivity.java | 17 +++++++ core/res/res/layout/system_user_home.xml | 44 +++++++++++++++++++ core/res/res/values/symbols.xml | 1 + .../server/am/ActivityManagerService.java | 5 ++- 4 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 core/res/res/layout/system_user_home.xml diff --git a/core/java/com/android/internal/app/SystemUserHomeActivity.java b/core/java/com/android/internal/app/SystemUserHomeActivity.java index 26fbf6f826a82..ee936a3f9abc7 100644 --- a/core/java/com/android/internal/app/SystemUserHomeActivity.java +++ b/core/java/com/android/internal/app/SystemUserHomeActivity.java @@ -17,10 +17,27 @@ package com.android.internal.app; import android.app.Activity; +import android.os.Bundle; +import android.util.Log; + +import com.android.internal.R; /** * Placeholder home activity, which is always installed on the system user. At least one home * activity must be present and enabled in order for the system to boot. */ public class SystemUserHomeActivity extends Activity { + private static final String TAG = "SystemUserHome"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Log.i(TAG, "onCreate"); + setContentView(R.layout.system_user_home); + } + + protected void onDestroy() { + super.onDestroy(); + Log.i(TAG, "onDestroy"); + } } diff --git a/core/res/res/layout/system_user_home.xml b/core/res/res/layout/system_user_home.xml new file mode 100644 index 0000000000000..8afa42338e365 --- /dev/null +++ b/core/res/res/layout/system_user_home.xml @@ -0,0 +1,44 @@ + + + + + + + + diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 7102f6c972473..1acff0f2bb0f1 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1546,6 +1546,7 @@ + diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index b001e62a4684a..39ea499f21d0c 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -456,6 +456,8 @@ public class ActivityManagerService extends IActivityManager.Stub static final String SYSTEM_DEBUGGABLE = "ro.debuggable"; + static final String SYSTEM_USER_HOME_NEEDED = "ro.system_user_home_needed"; + public static final String ANR_TRACE_DIR = "/data/anr"; // Maximum number of receivers an app can register. @@ -9111,7 +9113,8 @@ public class ActivityManagerService extends IActivityManager.Stub // to handle home activity in this case. if (UserManager.isSplitSystemUser() && Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.USER_SETUP_COMPLETE, 0) != 0) { + Settings.Secure.USER_SETUP_COMPLETE, 0) != 0 + || SystemProperties.getBoolean(SYSTEM_USER_HOME_NEEDED, false)) { ComponentName cName = new ComponentName(mContext, SystemUserHomeActivity.class); try { AppGlobals.getPackageManager().setComponentEnabledSetting(cName,