mirror of
https://github.com/revanced/revanced-manager-compose-old.git
synced 2025-04-30 14:34:29 +02:00
fix: duplicate dex entries
This commit is contained in:
parent
d12e7721af
commit
4b796f75ee
@ -24,10 +24,13 @@ import app.revanced.manager.ui.Resource
|
||||
import app.revanced.patcher.Patcher
|
||||
import app.revanced.patcher.PatcherOptions
|
||||
import app.revanced.patcher.data.Data
|
||||
import app.revanced.patcher.extensions.PatchExtensions.dependencies
|
||||
import app.revanced.patcher.extensions.PatchExtensions.patchName
|
||||
import app.revanced.patcher.logging.Logger
|
||||
import app.revanced.patcher.patch.Patch
|
||||
import app.revanced.patcher.patch.impl.ResourcePatch
|
||||
import java.io.File
|
||||
import java.nio.file.Files
|
||||
|
||||
class PatcherWorker(context: Context, parameters: WorkerParameters) :
|
||||
CoroutineWorker(context, parameters) {
|
||||
@ -100,7 +103,7 @@ class PatcherWorker(context: Context, parameters: WorkerParameters) :
|
||||
val integrations = workdir.resolve("integrations.apk")
|
||||
try {
|
||||
Log.d(tag, "Creating patcher")
|
||||
val patcher = Patcher(
|
||||
val patcher = Patcher( // start patcher
|
||||
PatcherOptions(
|
||||
inputFile,
|
||||
cacheDirectory.absolutePath,
|
||||
@ -131,8 +134,8 @@ class PatcherWorker(context: Context, parameters: WorkerParameters) :
|
||||
Log.d(tag, "Adding ${patches.size} patch(es)")
|
||||
patcher.addPatches(patches)
|
||||
|
||||
// patcher.addFiles(listOf(integrations)) {}
|
||||
|
||||
Log.d(tag, "Applying patches")
|
||||
patcher.applyPatches().forEach { (patch, result) ->
|
||||
if (result.isSuccess) {
|
||||
Log.i(tag, "[success] $patch")
|
||||
@ -142,28 +145,26 @@ class PatcherWorker(context: Context, parameters: WorkerParameters) :
|
||||
}
|
||||
Log.d(tag, "Saving file")
|
||||
|
||||
val result = patcher.save() // this function uses quite a bit of resources
|
||||
ZipFile(patchedFile).use { fs ->
|
||||
result.dexFiles.forEach { it ->
|
||||
Log.d(tag, "Writing dex file ${it.name}")
|
||||
fs.addEntryCompressData(
|
||||
ZipEntry.createWithName(it.name),
|
||||
it.stream.readBytes()
|
||||
)
|
||||
val result = patcher.save() // compile apk
|
||||
|
||||
if (patchedFile.exists()) Files.delete(patchedFile.toPath())
|
||||
|
||||
ZipFile(patchedFile).use { fs -> // somehow this function is the most resource intensive
|
||||
result.dexFiles.forEach { Log.d(tag, "Writing dex file ${it.name}")
|
||||
fs.addEntryCompressData(ZipEntry.createWithName(it.name), it.stream.readBytes())}
|
||||
|
||||
|
||||
result.resourceFile?.let {
|
||||
fs.copyEntriesFromFileAligned(ZipFile(it), ZipAligner::getEntryAlignment)
|
||||
}
|
||||
fs.copyEntriesFromFileAligned(ZipFile(inputFile), ZipAligner::getEntryAlignment)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Log.d(tag, "Signing apk")
|
||||
Signer("ReVanced", "s3cur3p@ssw0rd").signApk(patchedFile, outputFile)
|
||||
Log.i(tag, "Successfully patched into $outputFile")
|
||||
} finally {
|
||||
Log.d(tag, "Deleting workdir")
|
||||
workdir.deleteRecursively()
|
||||
// workdir.deleteRecursively()
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
@ -144,7 +144,7 @@ class PatcherViewModel(private val app: Application, private val api: API) : Vie
|
||||
.setInputData(
|
||||
androidx.work.Data.Builder()
|
||||
.putString("workdir", workdir.toString())
|
||||
.put("input",
|
||||
.putString("input",
|
||||
getSelectedPackageInfo()?.applicationInfo?.publicSourceDir
|
||||
)
|
||||
.build()).build()
|
||||
|
Loading…
x
Reference in New Issue
Block a user