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