Merge "fvp: Prepare the target to be launched via acloud."
diff --git a/MultiDisplayProvider/src/com/android/emulator/multidisplay/MultiDisplayService.java b/MultiDisplayProvider/src/com/android/emulator/multidisplay/MultiDisplayService.java
index 923b94b..49d5611 100644
--- a/MultiDisplayProvider/src/com/android/emulator/multidisplay/MultiDisplayService.java
+++ b/MultiDisplayProvider/src/com/android/emulator/multidisplay/MultiDisplayService.java
@@ -22,13 +22,10 @@
 import android.os.Handler;
 import android.os.IBinder;
 import android.util.Log;
-import android.view.Display;
-import android.graphics.PixelFormat;
 import android.hardware.display.DisplayManager;
 import android.hardware.display.VirtualDisplay;
 import android.view.Surface;
 import android.os.Messenger;
-import android.os.Message;
 
 
 public class MultiDisplayService extends Service {
@@ -52,7 +49,7 @@
     private VirtualDisplay mVirtualDisplay[];
     private Surface mSurface[];
     private Messenger mMessenger;
-    private ListenerThread mListner;
+    private ListenerThread mListener;
 
     private final Handler mHandler = new Handler();
 
@@ -99,8 +96,8 @@
             Log.e(TAG, "Failed to loadLibrary: " + e);
         }
 
-        mListner = new ListenerThread();
-        mListner.start();
+        mListener = new ListenerThread();
+        mListener.start();
 
         mDisplayManager = (DisplayManager)getSystemService(Context.DISPLAY_SERVICE);
         mMultiDisplay = new MultiDisplay[MAX_DISPLAYS + 1];
@@ -128,53 +125,50 @@
         }
 
         private void deleteVirtualDisplay(int displayId) {
-            int i = displayId;
-            if (mMultiDisplay[i].enabled == false) {
+            if (!mMultiDisplay[displayId].enabled) {
                 return;
             }
-            if (mMultiDisplay[i].virtualDisplay != null) {
-                mMultiDisplay[i].virtualDisplay.release();
+            if (mMultiDisplay[displayId].virtualDisplay != null) {
+                mMultiDisplay[displayId].virtualDisplay.release();
             }
-            if (mMultiDisplay[i].surface != null) {
-                mMultiDisplay[i].surface.release();
+            if (mMultiDisplay[displayId].surface != null) {
+                mMultiDisplay[displayId].surface.release();
             }
-            mMultiDisplay[i].clear();
-            nativeReleaseListener(i);
+            mMultiDisplay[displayId].clear();
+            nativeReleaseListener(displayId);
         }
 
         private void createVirtualDisplay(int displayId, int w, int h, int dpi, int flag) {
-            int i = displayId;
-            mMultiDisplay[i].surface = nativeCreateSurface(i, w, h);
-            mMultiDisplay[i].virtualDisplay = mDisplayManager.createVirtualDisplay(
+            mMultiDisplay[displayId].surface = nativeCreateSurface(displayId, w, h);
+            mMultiDisplay[displayId].virtualDisplay = mDisplayManager.createVirtualDisplay(
                                               null /* projection */,
                                               DISPLAY_NAME, w, h, dpi,
-                                              mMultiDisplay[i].surface, flag,
+                                              mMultiDisplay[displayId].surface, flag,
                                               null /* callback */,
                                               null /* handler */,
-                                              UNIQUE_DISPLAY_ID[i]);
-            mMultiDisplay[i].set(w, h, dpi, flag);
+                                              UNIQUE_DISPLAY_ID[displayId]);
+            mMultiDisplay[displayId].set(w, h, dpi, flag);
         }
 
         private void addVirtualDisplay(int displayId, int w, int h, int dpi, int flag) {
-            int i = displayId;
-            if (mMultiDisplay[i].match(w, h, dpi, flag)) {
+            if (mMultiDisplay[displayId].match(w, h, dpi, flag)) {
                 return;
             }
-            if (mMultiDisplay[i].virtualDisplay == null) {
-                createVirtualDisplay(i, w, h, dpi, flag);
+            if (mMultiDisplay[displayId].virtualDisplay == null) {
+                createVirtualDisplay(displayId, w, h, dpi, flag);
                 return;
             }
-            if (mMultiDisplay[i].flag != flag) {
-                deleteVirtualDisplay(i);
-                createVirtualDisplay(i, w, h, dpi, flag);
+            if (mMultiDisplay[displayId].flag != flag) {
+                deleteVirtualDisplay(displayId);
+                createVirtualDisplay(displayId, w, h, dpi, flag);
                 return;
             }
-            if (mMultiDisplay[i].width != w || mMultiDisplay[i].height != h) {
-                nativeResizeListener(i, w, h);
+            if (mMultiDisplay[displayId].width != w || mMultiDisplay[displayId].height != h) {
+                nativeResizeListener(displayId, w, h);
             }
             // only dpi changes
-            mMultiDisplay[i].virtualDisplay.resize(w, h, dpi);
-            mMultiDisplay[i].set(w, h, dpi, flag);
+            mMultiDisplay[displayId].virtualDisplay.resize(w, h, dpi);
+            mMultiDisplay[displayId].set(w, h, dpi, flag);
         }
 
         @Override
diff --git a/MultiDisplayProvider/src/com/android/emulator/multidisplay/MultiDisplayServiceReceiver.java b/MultiDisplayProvider/src/com/android/emulator/multidisplay/MultiDisplayServiceReceiver.java
index c84c43a..23ccd3c 100644
--- a/MultiDisplayProvider/src/com/android/emulator/multidisplay/MultiDisplayServiceReceiver.java
+++ b/MultiDisplayProvider/src/com/android/emulator/multidisplay/MultiDisplayServiceReceiver.java
@@ -24,20 +24,20 @@
 import android.util.Log;
 
 public class MultiDisplayServiceReceiver extends BroadcastReceiver {
-    private static final String TAG = "MultiDisplayServiceReceiver";
+    private static final String TAG = "MultiDispActionReceiver";
 
     @Override
     public void onReceive(Context context, Intent intent) {
-        if (isMyServiceRunning(MultiDisplayService.class, context) == false) {
+        if (!isMyServiceRunning(context)) {
             Log.v(TAG, "startService");
             context.startService(new Intent(context, MultiDisplayService.class));
         }
     }
 
-    private boolean isMyServiceRunning(Class<?> serviceClass, Context context) {
+    private boolean isMyServiceRunning(Context context) {
         ActivityManager manager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
         for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
-            if (serviceClass.getName().equals(service.service.getClassName())) {
+            if (MultiDisplayService.class.getName().equals(service.service.getClassName())) {
                 return true;
             }
         }
diff --git a/arm64-vendor.mk b/arm64-vendor.mk
index d8f54e9..c235cf6 100644
--- a/arm64-vendor.mk
+++ b/arm64-vendor.mk
@@ -5,6 +5,9 @@
 PRODUCT_PROPERTY_OVERRIDES += \
        vendor.rild.libpath=/vendor/lib64/libgoldfish-ril.so
 
+PRODUCT_SHIPPING_API_LEVEL := 28
+TARGET_USES_MKE2FS := true
+
 # Note: the following lines need to stay at the beginning so that it can
 # take priority  and override the rules it inherit from other mk files
 # see copy file rules in core/Makefile
diff --git a/data/etc/Android.bp b/data/etc/Android.bp
new file mode 100644
index 0000000..df8c768
--- /dev/null
+++ b/data/etc/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_prebuilt_binary {
+    name: "emulatorip",
+    srcs: ["x86/emulatorip"],
+    stem: "ip",
+    shared_libs: [
+        "libc",
+        "libc++",
+        "libdl",
+        "libm",
+    ],
+    compile_multilib: "32",
+    vendor: true,
+    strip: {
+        none: true,
+    },
+}
diff --git a/fvp.mk b/fvp.mk
index b3902a7..7c64873 100644
--- a/fvp.mk
+++ b/fvp.mk
@@ -45,7 +45,6 @@
     android.hardware.audio.service \
     android.hardware.audio@6.0-impl:32 \
     android.hardware.audio.effect@6.0-impl:32 \
-    android.hardware.soundtrigger@2.2-impl \
     audio.primary.default \
     audio.r_submix.default \
     android.hardware.drm@1.0-service \
diff --git a/fvpbase/manifest.xml b/fvpbase/manifest.xml
index cb39edb..51c7f93 100644
--- a/fvpbase/manifest.xml
+++ b/fvpbase/manifest.xml
@@ -117,13 +117,4 @@
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl">
-        <name>android.hardware.soundtrigger</name>
-        <transport>hwbinder</transport>
-        <version>2.2</version>
-        <interface>
-            <name>ISoundTriggerHw</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
 </manifest>
diff --git a/fvpbase/tools/Android.bp b/fvpbase/tools/Android.bp
index a163725..3534198 100644
--- a/fvpbase/tools/Android.bp
+++ b/fvpbase/tools/Android.bp
@@ -18,4 +18,5 @@
 cc_library_host_shared {
   name: "bind_to_localhost",
   srcs: ["bind_to_localhost.cpp"],
+  stl: "none",
 }
diff --git a/init.ranchu.rc b/init.ranchu.rc
index d486c65..01c3499 100644
--- a/init.ranchu.rc
+++ b/init.ranchu.rc
@@ -4,6 +4,7 @@
 on early-init
     mount proc proc /proc remount hidepid=2,gid=3009
     setprop ro.hardware.egl emulation
+    setprop ro.hardware.vulkan ranchu
 
 on init
     # set RLIMIT_MEMLOCK to 8MB for BPF network statistics
diff --git a/x86-vendor.mk b/x86-vendor.mk
index 720dfb5..8e654de 100644
--- a/x86-vendor.mk
+++ b/x86-vendor.mk
@@ -20,8 +20,8 @@
     device/generic/goldfish/data/etc/encryptionkey.img:images/x86/encryptionkey.img \
     prebuilts/qemu-kernel/x86_64/$(PRODUCT_KERNEL_VERSION)/kernel-qemu2:images/x86/kernel-ranchu-64
 
-PRODUCT_COPY_FILES += \
-    device/generic/goldfish/data/etc/x86/emulatorip:$(TARGET_COPY_OUT_VENDOR)/bin/ip
+PRODUCT_PACKAGES += \
+    emulatorip
 
 
 PRODUCT_SHIPPING_API_LEVEL := 28
diff --git a/x86_64-vendor.mk b/x86_64-vendor.mk
index eb78911..2334fa6 100644
--- a/x86_64-vendor.mk
+++ b/x86_64-vendor.mk
@@ -21,8 +21,8 @@
     device/generic/goldfish/data/etc/encryptionkey.img:images/x86_64/encryptionkey.img \
     prebuilts/qemu-kernel/x86_64/$(PRODUCT_KERNEL_VERSION)/kernel-qemu2:images/x86_64/kernel-ranchu
 
-PRODUCT_COPY_FILES += \
-    device/generic/goldfish/data/etc/x86/emulatorip:$(TARGET_COPY_OUT_VENDOR)/bin/ip
+PRODUCT_PACKAGES += \
+    emulatorip
 
 
 PRODUCT_SHIPPING_API_LEVEL := 28