mirror of
https://github.com/revanced/revanced-patcher.git
synced 2025-04-30 21:34:25 +02:00
fix: Patcher not writing resolved methods
This commit is contained in:
parent
544bcf76bd
commit
fac44a50c3
@ -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…
x
Reference in New Issue
Block a user