mirror of
https://github.com/ReVanced/revanced-patcher.git
synced 2024-11-10 01:02:22 +01:00
fix: Patcher not writing resolved methods
This commit is contained in:
parent
6767c8fbc1
commit
d15240d033
2 changed files with 11 additions and 3 deletions
|
@ -39,10 +39,13 @@ class Patcher(
|
|||
val newDexFile = object : DexFile {
|
||||
override fun getClasses(): Set<ClassDef> {
|
||||
// this is a slow workaround for now
|
||||
cache.methodMap.values.forEach {
|
||||
if (!it.definingClassProxy.proxyUsed) return@forEach
|
||||
cache.classes.replace(it.definingClassProxy.originalIndex, it.definingClassProxy.mutatedClass)
|
||||
}
|
||||
cache.classProxy
|
||||
.filter { it.proxyUsed }.forEach { proxy ->
|
||||
cache.classes.remove(cache.classes.elementAt(proxy.originalIndex))
|
||||
cache.classes.add(proxy.mutatedClass)
|
||||
cache.classes.replace(proxy.originalIndex, proxy.mutatedClass)
|
||||
}
|
||||
|
||||
return cache.classes
|
||||
|
@ -87,3 +90,8 @@ class Patcher(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun MutableSet<ClassDef>.replace(originalIndex: Int, mutatedClass: ClassDef) {
|
||||
this.remove(this.elementAt(originalIndex))
|
||||
this.add(mutatedClass)
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ import org.jf.dexlib2.iface.ClassDef
|
|||
|
||||
class Cache(
|
||||
internal val classes: MutableSet<ClassDef>,
|
||||
val resolvedMethods: MethodMap
|
||||
val methodMap: MethodMap
|
||||
) {
|
||||
// TODO: currently we create ClassProxies at multiple places, which is why we could have merge conflicts
|
||||
// this can be solved by creating a dedicated method for creating class proxies,
|
||||
|
|
Loading…
Reference in a new issue