diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-10-19 03:43:11 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-10-19 03:43:11 +0000 |
commit | c2484b8a9355080ecb9b087e3b95c08b745ab853 (patch) | |
tree | 916ee8746874e9a81482bc0a80581982a3d20dcf | |
parent | c74a9c3d5bf9c1234df83937b928c3176185733a (diff) | |
parent | 6f843c5f167bbd5f8a0bd934d9662a1057064de7 (diff) | |
download | vogar-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.java | 35 |
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; } |