In theory the package manager now scans /vendor/app

Not tested.

Change-Id: Ib6120d645074c95dd0afd1476f6167aec5d50bb9
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java
index 72784d5..4c15c94 100644
--- a/services/java/com/android/server/PackageManagerService.java
+++ b/services/java/com/android/server/PackageManagerService.java
@@ -222,6 +222,9 @@
     // This is the object monitoring the system app dir.
     final FileObserver mSystemInstallObserver;
 
+    // This is the object monitoring the system app dir.
+    final FileObserver mVendorInstallObserver;
+
     // This is the object monitoring mAppInstallDir.
     final FileObserver mAppInstallObserver;
 
@@ -234,6 +237,7 @@
 
     final File mFrameworkDir;
     final File mSystemAppDir;
+    final File mVendorAppDir;
     final File mAppInstallDir;
     final File mDalvikCacheDir;
 
@@ -927,6 +931,14 @@
             scanDirLI(mSystemAppDir, PackageParser.PARSE_IS_SYSTEM
                     | PackageParser.PARSE_IS_SYSTEM_DIR, scanMode);
             
+            // Collect all vendor packages.
+            mVendorAppDir = new File("/vendor/app");
+            mVendorInstallObserver = new AppDirObserver(
+                mVendorAppDir.getPath(), OBSERVER_EVENTS, true);
+            mVendorInstallObserver.startWatching();
+            scanDirLI(mVendorAppDir, PackageParser.PARSE_IS_SYSTEM
+                    | PackageParser.PARSE_IS_SYSTEM_DIR, scanMode);
+
             if (mInstaller != null) {
                 if (DEBUG_UPGRADE) Log.v(TAG, "Running installd update commands");
                 mInstaller.moveFiles();
@@ -2493,9 +2505,13 @@
     }
 
     private void scanDirLI(File dir, int flags, int scanMode) {
-        Log.d(TAG, "Scanning app dir " + dir);
-
         String[] files = dir.list();
+        if (files == null) {
+            Log.d(TAG, "No files in app dir " + dir);
+            return;
+        }
+
+        Log.d(TAG, "Scanning app dir " + dir);
 
         int i;
         for (i=0; i<files.length; i++) {