Add getBuildId method to IntalledImage

Bug: 376784944
Test: N/A
Change-Id: Id64851a54b715c30b78393f87910202a0bc37370
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/InstalledImage.java b/android/TerminalApp/java/com/android/virtualization/terminal/InstalledImage.java
index f318358..08ebac0 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/InstalledImage.java
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/InstalledImage.java
@@ -23,7 +23,9 @@
 import android.system.Os;
 import android.util.Log;
 
+import java.io.BufferedReader;
 import java.io.FileDescriptor;
+import java.io.FileReader;
 import java.io.IOException;
 import java.io.RandomAccessFile;
 import java.nio.file.Files;
@@ -36,6 +38,7 @@
     private static final String ROOTFS_FILENAME = "root_part";
     private static final String BACKUP_FILENAME = "root_part_backup";
     private static final String CONFIG_FILENAME = "vm_config.json";
+    private static final String BUILD_ID_FILENAME = "build_id";
     static final String MARKER_FILENAME = "completed";
 
     public static final long RESIZE_STEP_BYTES = 4 << 20; // 4 MiB
@@ -45,6 +48,7 @@
     private final Path mBackup;
     private final Path mConfig;
     private final Path mMarker;
+    private final String mBuildId;
 
     /** Returns InstalledImage for a given app context */
     public static InstalledImage getDefault(Context context) {
@@ -58,6 +62,7 @@
         mBackup = dir.resolve(BACKUP_FILENAME);
         mConfig = dir.resolve(CONFIG_FILENAME);
         mMarker = dir.resolve(MARKER_FILENAME);
+        mBuildId = readBuildId();
     }
 
     public Path getInstallDir() {
@@ -79,6 +84,23 @@
         return mConfig;
     }
 
+    /** Returns the build ID of the installed image */
+    public String getBuildId() {
+        return mBuildId;
+    }
+
+    private String readBuildId() {
+        Path file = mDir.resolve(BUILD_ID_FILENAME);
+        if (!Files.exists(file)) {
+            return "<no build id>";
+        }
+        try (BufferedReader r = new BufferedReader(new FileReader(file.toFile()))) {
+            return r.readLine();
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to read build ID", e);
+        }
+    }
+
     public Path uninstallAndBackup() throws IOException {
         Files.delete(mMarker);
         Files.move(mRootPartition, mBackup, StandardCopyOption.REPLACE_EXISTING);