mirror of
https://github.com/revanced/revanced-patcher.git
synced 2025-05-06 15:14:26 +02:00
perf: depend on androlib
instead of ApkDecoder
Signed-off-by: oSumAtrIX <johan.melkonyan1@web.de>
This commit is contained in:
parent
99319e63da
commit
cc9416dd11
@ -12,7 +12,7 @@ import app.revanced.patcher.signature.MethodSignature
|
|||||||
import app.revanced.patcher.signature.resolver.SignatureResolver
|
import app.revanced.patcher.signature.resolver.SignatureResolver
|
||||||
import app.revanced.patcher.util.ListBackedSet
|
import app.revanced.patcher.util.ListBackedSet
|
||||||
import brut.androlib.Androlib
|
import brut.androlib.Androlib
|
||||||
import brut.androlib.ApkDecoder
|
import brut.androlib.meta.UsesFramework
|
||||||
import brut.directory.ExtFile
|
import brut.directory.ExtFile
|
||||||
import lanchon.multidexlib2.BasicDexFileNamer
|
import lanchon.multidexlib2.BasicDexFileNamer
|
||||||
import lanchon.multidexlib2.DexIO
|
import lanchon.multidexlib2.DexIO
|
||||||
@ -40,25 +40,32 @@ class Patcher(
|
|||||||
val packageVersion: String
|
val packageVersion: String
|
||||||
val packageName: String
|
val packageName: String
|
||||||
|
|
||||||
|
private val usesFramework: UsesFramework
|
||||||
private val patcherData: PatcherData
|
private val patcherData: PatcherData
|
||||||
private val opcodes: Opcodes
|
private val opcodes: Opcodes
|
||||||
private var signaturesResolved = false
|
private var signaturesResolved = false
|
||||||
private val androlib = Androlib()
|
private val androlib = Androlib()
|
||||||
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
// FIXME: only use androlib instead of ApkDecoder which is currently a temporal solution
|
val extFileInput = ExtFile(inputFile)
|
||||||
val decoder = ApkDecoder(androlib)
|
val resourceTable = androlib.getResTable(extFileInput, true)
|
||||||
|
val outDir = File(resourceCacheDirectory)
|
||||||
|
|
||||||
decoder.setApkFile(inputFile)
|
if (outDir.exists()) outDir.deleteRecursively()
|
||||||
decoder.setDecodeSources(ApkDecoder.DECODE_SOURCES_NONE)
|
outDir.mkdir()
|
||||||
decoder.setForceDelete(true)
|
|
||||||
// decode resources to cache directory
|
|
||||||
decoder.setOutDir(File(resourceCacheDirectory))
|
|
||||||
decoder.decode()
|
|
||||||
|
|
||||||
// get package info
|
// 1. decode resources to cache directory
|
||||||
packageName = decoder.resTable.packageOriginal
|
androlib.decodeManifestWithResources(extFileInput, outDir, resourceTable)
|
||||||
packageVersion = decoder.resTable.versionInfo.versionName
|
androlib.decodeResourcesFull(extFileInput, outDir, resourceTable)
|
||||||
|
|
||||||
|
// 2. read framework ids from the resource table
|
||||||
|
usesFramework = UsesFramework()
|
||||||
|
usesFramework.ids = resourceTable.listFramePackages().map { it.id }.sorted()
|
||||||
|
|
||||||
|
// 3. read package info
|
||||||
|
packageName = resourceTable.packageOriginal
|
||||||
|
packageVersion = resourceTable.versionInfo.versionName
|
||||||
|
|
||||||
// read dex files
|
// read dex files
|
||||||
val dexFile = MultiDexIO.readDexFile(true, inputFile, NAMER, null, null)
|
val dexFile = MultiDexIO.readDexFile(true, inputFile, NAMER, null, null)
|
||||||
@ -116,7 +123,7 @@ class Patcher(
|
|||||||
// build modified resources
|
// build modified resources
|
||||||
if (patchResources) {
|
if (patchResources) {
|
||||||
val extDir = ExtFile(resourceCacheDirectory)
|
val extDir = ExtFile(resourceCacheDirectory)
|
||||||
androlib.buildResources(extDir, androlib.readMetaFile(extDir).usesFramework)
|
androlib.buildResources(extDir, usesFramework)
|
||||||
}
|
}
|
||||||
|
|
||||||
// write dex modified files
|
// write dex modified files
|
||||||
|
Loading…
x
Reference in New Issue
Block a user