Minor cleanup on custom VM configs

This is a follow-up on If6fde37f0dedd4af9a237cadfcb4ecf43b57ccd2.

Bug: N/A
Test: m
Change-Id: I4edb15c38107960494ae46c991449bc5ed59519e
diff --git a/java/framework/src/android/system/virtualmachine/VirtualMachineCustomImageConfig.java b/java/framework/src/android/system/virtualmachine/VirtualMachineCustomImageConfig.java
index 3f074b5..2a571ff 100644
--- a/java/framework/src/android/system/virtualmachine/VirtualMachineCustomImageConfig.java
+++ b/java/framework/src/android/system/virtualmachine/VirtualMachineCustomImageConfig.java
@@ -211,25 +211,23 @@
                 String imagePath = disks[i].imagePath;
                 images[i] = imagePath == null ? "" : imagePath;
 
-                List<String> partitionLabels = new ArrayList<>();
-                List<String> partitionImages = new ArrayList<>();
-                List<Boolean> partitionWritables = new ArrayList<>();
-                List<String> partitionGuids = new ArrayList<>();
-                for (Partition p : disks[i].getPartitions()) {
-                    partitionLabels.add(p.name);
-                    partitionImages.add(p.imagePath);
-                    partitionWritables.add(p.writable);
-                    partitionGuids.add(p.guid == null ? "" : p.guid);
+                int numPartitions = disks[i].getPartitions().size();
+                String[] partitionLabels = new String[numPartitions];
+                String[] partitionImages = new String[numPartitions];
+                boolean[] partitionWritables = new boolean[numPartitions];
+                String[] partitionGuids = new String[numPartitions];
+
+                for (int j = 0; j < numPartitions; j++) {
+                    Partition p = disks[i].getPartitions().get(j);
+                    partitionLabels[j] = p.name;
+                    partitionImages[j] = p.imagePath;
+                    partitionWritables[j] = p.writable;
+                    partitionGuids[j] = p.guid == null ? "" : p.guid;
                 }
-                pb.putStringArray(KEY_PARTITION_LABELS + i, partitionLabels.toArray(new String[0]));
-                pb.putStringArray(KEY_PARTITION_IMAGES + i, partitionImages.toArray(new String[0]));
-                boolean[] arr = new boolean[partitionWritables.size()];
-                int index = 0;
-                for (Boolean b : partitionWritables) {
-                    arr[index++] = b;
-                }
-                pb.putBooleanArray(KEY_PARTITION_WRITABLES + i, arr);
-                pb.putStringArray(KEY_PARTITION_GUIDS + i, partitionGuids.toArray(new String[0]));
+                pb.putStringArray(KEY_PARTITION_LABELS + i, partitionLabels);
+                pb.putStringArray(KEY_PARTITION_IMAGES + i, partitionImages);
+                pb.putBooleanArray(KEY_PARTITION_WRITABLES + i, partitionWritables);
+                pb.putStringArray(KEY_PARTITION_GUIDS + i, partitionGuids);
             }
             pb.putBooleanArray(KEY_DISK_WRITABLES, writables);
             pb.putStringArray(KEY_DISK_IMAGES, images);
diff --git a/vmlauncher_app/java/com/android/virtualization/vmlauncher/MainActivity.java b/vmlauncher_app/java/com/android/virtualization/vmlauncher/MainActivity.java
index b62fafb..cf6c3a7 100644
--- a/vmlauncher_app/java/com/android/virtualization/vmlauncher/MainActivity.java
+++ b/vmlauncher_app/java/com/android/virtualization/vmlauncher/MainActivity.java
@@ -132,9 +132,9 @@
                                             item.getString("image")));
                         }
                     } else if (item.has("partitions")) {
-                        boolean writable = item.optBoolean("writable", false);
+                        boolean diskWritable = item.optBoolean("writable", false);
                         VirtualMachineCustomImageConfig.Disk disk =
-                                writable
+                                diskWritable
                                         ? VirtualMachineCustomImageConfig.Disk.RWDisk(null)
                                         : VirtualMachineCustomImageConfig.Disk.RODisk(null);
                         JSONArray partitions = item.getJSONArray("partitions");
@@ -142,7 +142,8 @@
                             JSONObject partition = partitions.getJSONObject(j);
                             String label = partition.getString("label");
                             String path = partition.getString("path");
-                            boolean partitionWritable = partition.optBoolean("writable", false);
+                            boolean partitionWritable =
+                                    diskWritable && partition.optBoolean("writable", false);
                             String guid = partition.optString("guid");
                             VirtualMachineCustomImageConfig.Partition p =
                                     new VirtualMachineCustomImageConfig.Partition(