38 lines
1.1 KiB
Kotlin
38 lines
1.1 KiB
Kotlin
package app.revanced.cli.aligning
|
|
|
|
import app.revanced.cli.command.MainCommand.logger
|
|
import app.revanced.patcher.PatcherResult
|
|
import app.revanced.utils.signing.align.ZipAligner
|
|
import app.revanced.utils.signing.align.zip.ZipFile
|
|
import app.revanced.utils.signing.align.zip.structures.ZipEntry
|
|
import java.io.File
|
|
|
|
object Aligning {
|
|
fun align(result: PatcherResult, inputFile: File, outputFile: File) {
|
|
logger.info("Aligning ${inputFile.name} to ${outputFile.name}")
|
|
|
|
if (outputFile.exists()) outputFile.delete()
|
|
|
|
ZipFile(outputFile).use { file ->
|
|
result.dexFiles.forEach {
|
|
file.addEntryCompressData(
|
|
ZipEntry.createWithName(it.name),
|
|
it.stream.readBytes()
|
|
)
|
|
}
|
|
|
|
result.resourceFile?.let {
|
|
file.copyEntriesFromFileAligned(
|
|
ZipFile(it),
|
|
ZipAligner::getEntryAlignment
|
|
)
|
|
}
|
|
|
|
file.copyEntriesFromFileAligned(
|
|
ZipFile(inputFile),
|
|
ZipAligner::getEntryAlignment
|
|
)
|
|
}
|
|
}
|
|
}
|