Fix 2641875
Initialize the cache path only if the container exists.
This did exist before but was somehow removed.
Fix a known test failure as well.

Change-Id: I63219369b0e7abca4919fbde2a04035a0fea9e35
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java
index 22becba..5ed19a2 100644
--- a/services/java/com/android/server/PackageManagerService.java
+++ b/services/java/com/android/server/PackageManagerService.java
@@ -5057,7 +5057,8 @@
         }
     }
 
-    private InstallArgs createInstallArgs(Uri packageURI, int flags, String pkgName) {
+    private InstallArgs createInstallArgs(Uri packageURI, int flags,
+            String pkgName) {
         if (installOnSd(flags)) {
             String cid = getNextCodePath(null, pkgName, "/" + SdInstallArgs.RES_FILE_NAME);
             return new SdInstallArgs(packageURI, cid);
@@ -5317,6 +5318,7 @@
         SdInstallArgs(String cid) {
             super(null, null, PackageManager.INSTALL_EXTERNAL, null);
             this.cid = cid;
+            cachePath = PackageHelper.getSdDir(cid);
         }
 
         SdInstallArgs(Uri packageURI, String cid) {