aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-10-19 03:43:11 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-10-19 03:43:11 +0000
commitc2484b8a9355080ecb9b087e3b95c08b745ab853 (patch)
tree916ee8746874e9a81482bc0a80581982a3d20dcf
parentc74a9c3d5bf9c1234df83937b928c3176185733a (diff)
parent6f843c5f167bbd5f8a0bd934d9662a1057064de7 (diff)
downloadvogar-gki13-boot-release.tar.gz
Snap for 9192524 from 6f843c5f167bbd5f8a0bd934d9662a1057064de7 to gki13-boot-releasegki13-boot-release
Change-Id: I46808eb4b60a9ca2012e53dbc58c4374c8b6d50a
-rw-r--r--src/vogar/android/AndroidSdk.java35
1 files changed, 22 insertions, 13 deletions
diff --git a/src/vogar/android/AndroidSdk.java b/src/vogar/android/AndroidSdk.java
index 6dc5f4a..068508a 100644
--- a/src/vogar/android/AndroidSdk.java
+++ b/src/vogar/android/AndroidSdk.java
@@ -408,7 +408,7 @@ public class AndroidSdk {
case D8:
List<String> sanitizedOutputFilePaths;
try {
- sanitizedOutputFilePaths = removeDexFilesForD8(filePaths);
+ sanitizedOutputFilePaths = removeDexFilesForD8(filePaths, outputTempDir);
} catch (IOException e) {
throw new RuntimeException("Error while removing dex files from archive", e);
}
@@ -484,26 +484,35 @@ public class AndroidSdk {
}
/**
+ * Generates a file path for a modified d8 input file.
+ * @param inputFile the d8 input file.
+ * @param outputDirectory the directory where the modified file should be written.
+ * @return the destination for the modified d8 input file.
+ */
+ private static File getModifiedD8Destination(File inputFile, File outputDirectory) {
+ String name = inputFile.getName();
+ int suffixStart = name.lastIndexOf('.');
+ if (suffixStart != -1) {
+ name = name.substring(0, suffixStart);
+ }
+ return new File(outputDirectory, name + "-d8.jar");
+ }
+
+ /**
* Removes DEX files from an archive and preserves the rest.
*/
- private List<String> removeDexFilesForD8(List<String> fileNames) throws IOException {
+ private List<String> removeDexFilesForD8(List<String> fileNames, File tempDir)
+ throws IOException {
byte[] buffer = new byte[4096];
List<String> processedFiles = new ArrayList<>(fileNames.size());
for (String inputFileName : fileNames) {
- String jarExtension = ".jar";
- String outputFileName;
- if (inputFileName.endsWith(jarExtension)) {
- outputFileName =
- inputFileName.substring(0, inputFileName.length() - jarExtension.length())
- + "-d8" + jarExtension;
- } else {
- outputFileName = inputFileName + "-d8" + jarExtension;
- }
+ File inputFile = new File(inputFileName);
+ File outputFile = getModifiedD8Destination(inputFile, tempDir);
try (JarOutputStream outputJar =
- new JarOutputStream(new FileOutputStream(outputFileName))) {
+ new JarOutputStream(new FileOutputStream(outputFile))) {
copyJarContentExcludingFiles(buffer, inputFileName, outputJar, ".dex");
}
- processedFiles.add(outputFileName);
+ processedFiles.add(outputFile.toString());
}
return processedFiles;
}