1 package com.android.virt;
2 
3 import java.io.DataOutputStream;
4 import java.io.File;
5 import java.io.FileOutputStream;
6 import java.io.IOException;
7 
8 /** Provides utility to create/read/write PayloadMetadata */
9 public class PayloadMetadata {
write(PayloadMetadataProtos.Metadata metadata, File file)10     public static void write(PayloadMetadataProtos.Metadata metadata, File file)
11             throws IOException {
12         byte[] message = metadata.toByteArray();
13 
14         try (DataOutputStream os = new DataOutputStream(new FileOutputStream(file))) {
15             // write length prefix (4-byte, big-endian)
16             os.writeInt(message.length);
17             // write the message
18             os.write(message);
19         }
20     }
21 
metadata( String configPath, PayloadMetadataProtos.ApkPayload apk, Iterable<? extends PayloadMetadataProtos.ApexPayload> apexes)22     public static PayloadMetadataProtos.Metadata metadata(
23             String configPath,
24             PayloadMetadataProtos.ApkPayload apk,
25             Iterable<? extends PayloadMetadataProtos.ApexPayload> apexes) {
26         return PayloadMetadataProtos.Metadata.newBuilder()
27                 .setVersion(1)
28                 .setConfigPath(configPath)
29                 .setApk(apk)
30                 .addAllApexes(apexes)
31                 .build();
32     }
33 
apk(String name)34     public static PayloadMetadataProtos.ApkPayload apk(String name) {
35         return PayloadMetadataProtos.ApkPayload.newBuilder()
36                 .setName(name)
37                 .setPayloadPartitionName("microdroid-apk")
38                 .setIdsigPartitionName("microdroid-apk-idsig")
39                 .build();
40     }
41 
apex(String name)42     public static PayloadMetadataProtos.ApexPayload apex(String name) {
43         return PayloadMetadataProtos.ApexPayload.newBuilder()
44                 .setName(name)
45                 .setIsFactory(true)
46                 .setPartitionName(name)
47                 .build();
48     }
49 }
50