Signature streaming from local file, property to disable incremental.
+Tests
Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest
Bug: b/136132412 b/133435829
Change-Id: I826900e120c72e7cdd0549c70da28d817982dcd3
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index 3909fdf..c267cea 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -88,6 +88,7 @@
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
+import android.os.incremental.V4Signature;
import android.os.storage.StorageManager;
import android.permission.IPermissionManager;
import android.system.ErrnoException;
@@ -3024,9 +3025,15 @@
final File file = new File(inPath);
final String name = file.getName();
final long size = file.length();
- byte[] metadata = inPath.getBytes(StandardCharsets.UTF_8);
+ final byte[] metadata = inPath.getBytes(StandardCharsets.UTF_8);
- session.addFile(LOCATION_DATA_APP, name, size, metadata, null);
+ // Try to load a v4 signature for the APK.
+ final V4Signature v4signature = V4Signature.readFrom(
+ new File(inPath + V4Signature.EXT));
+ final byte[] v4signatureBytes =
+ (v4signature != null) ? v4signature.toByteArray() : null;
+
+ session.addFile(LOCATION_DATA_APP, name, size, metadata, v4signatureBytes);
}
return 0;
} finally {