diff --git a/revanced-cli/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt b/revanced-cli/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt index 8cec83c..97dc6a1 100644 --- a/revanced-cli/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt +++ b/revanced-cli/src/main/kotlin/app/revanced/cli/command/PatchCommand.kt @@ -208,10 +208,10 @@ internal object PatchCommand : Runnable { // region Save - val aligned = resourceCachePath.resolve(apk.name) - ApkUtils.align(apk, aligned, patcherResult) + val tempFile = resourceCachePath.resolve(apk.name) + ApkUtils.copyAligned(apk, tempFile, patcherResult) if (!mount) ApkUtils.sign( - aligned, + tempFile, outputFilePath, SigningOptions( commonName, diff --git a/revanced-lib/api/revanced-lib.api b/revanced-lib/api/revanced-lib.api index 9f1267d..8470bad 100644 --- a/revanced-lib/api/revanced-lib.api +++ b/revanced-lib/api/revanced-lib.api @@ -1,6 +1,6 @@ public final class app/revanced/lib/ApkUtils { public static final field INSTANCE Lapp/revanced/lib/ApkUtils; - public final fun align (Ljava/io/File;Ljava/io/File;Lapp/revanced/patcher/PatcherResult;)V + public final fun copyAligned (Ljava/io/File;Ljava/io/File;Lapp/revanced/patcher/PatcherResult;)V public final fun sign (Ljava/io/File;Ljava/io/File;Lapp/revanced/lib/signing/SigningOptions;)V } @@ -98,7 +98,7 @@ public final class app/revanced/lib/signing/SigningOptions { public final class app/revanced/lib/zip/ZipAligner { public static final field INSTANCE Lapp/revanced/lib/zip/ZipAligner; - public final fun getEntryAlignment (Lapp/revanced/lib/zip/structures/ZipEntry;)Ljava/lang/Integer; + public final fun getApkZipEntryAlignment ()Lkotlin/jvm/functions/Function1; } public final class app/revanced/lib/zip/ZipFile : java/io/Closeable { diff --git a/revanced-lib/src/main/kotlin/app/revanced/lib/ApkUtils.kt b/revanced-lib/src/main/kotlin/app/revanced/lib/ApkUtils.kt index 247a4f9..6de8201 100644 --- a/revanced-lib/src/main/kotlin/app/revanced/lib/ApkUtils.kt +++ b/revanced-lib/src/main/kotlin/app/revanced/lib/ApkUtils.kt @@ -8,6 +8,7 @@ import app.revanced.lib.zip.structures.ZipEntry import app.revanced.patcher.PatcherResult import java.io.File import java.util.logging.Logger +import kotlin.io.path.deleteIfExists @Suppress("MemberVisibilityCanBePrivate", "unused") object ApkUtils { @@ -20,9 +21,11 @@ object ApkUtils { * @param outputFile The apk to write the new entries to. * @param patchedEntriesSource The result of the patcher to add the patched dex files and resources. */ - fun align(apkFile: File, outputFile: File, patchedEntriesSource: PatcherResult) { + fun copyAligned(apkFile: File, outputFile: File, patchedEntriesSource: PatcherResult) { logger.info("Aligning ${apkFile.name}") + outputFile.toPath().deleteIfExists() + ZipFile(outputFile).use { file -> patchedEntriesSource.dexFiles.forEach { file.addEntryCompressData(