Add servicemanager.microdroid

servicemanager.microdroid is the servicemanager built for microdroid.
The only difference is that it's built with `bootstrap: true` so that it
can start early when APEXes are not activated.

Previously, servicemanager was started after APEXes are activated, but
the introduction of diced made it impossible. Microdroid_manager depends
on diced to select the list of APEXes to be activated. diced in turn
depends on servicemanager.

Bug: 214231981
Test: run microdroid
Change-Id: I6199e1f343d0890f6bf5498e588b92df55d87fe6
diff --git a/cmds/servicemanager/Android.bp b/cmds/servicemanager/Android.bp
index 80c0548..32922ca 100644
--- a/cmds/servicemanager/Android.bp
+++ b/cmds/servicemanager/Android.bp
@@ -47,6 +47,14 @@
 }
 
 cc_binary {
+    name: "servicemanager.microdroid",
+    defaults: ["servicemanager_defaults"],
+    init_rc: ["servicemanager.microdroid.rc"],
+    srcs: ["main.cpp"],
+    bootstrap: true,
+}
+
+cc_binary {
     name: "servicemanager.recovery",
     stem: "servicemanager",
     recovery: true,
diff --git a/cmds/servicemanager/servicemanager.microdroid.rc b/cmds/servicemanager/servicemanager.microdroid.rc
new file mode 100644
index 0000000..8c1a6ed
--- /dev/null
+++ b/cmds/servicemanager/servicemanager.microdroid.rc
@@ -0,0 +1,13 @@
+service servicemanager /system/bin/servicemanager.microdroid
+    class core animation
+    user system
+    group system readproc
+    critical
+    onrestart restart apexd
+    onrestart restart audioserver
+    onrestart restart gatekeeperd
+    onrestart class_restart --only-enabled main
+    onrestart class_restart --only-enabled hal
+    onrestart class_restart --only-enabled early_hal
+    task_profiles ServiceCapacityLow
+    shutdown critical