Skip to content
This repository was archived by the owner on Apr 15, 2024. It is now read-only.

Commit ace70e4

Browse files
committed
fix: migrate to latest patcher api changes
1 parent 735dbc9 commit ace70e4

File tree

5 files changed

+60
-79
lines changed

5 files changed

+60
-79
lines changed

build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ repositories {
2424

2525
dependencies {
2626
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.6.21")
27-
implementation("app.revanced:revanced-patcher:1.0.0-dev.16")
27+
implementation("app.revanced:revanced-patcher:1.0.0-dev.17")
2828

2929
implementation("info.picocli:picocli:4.6.3")
3030

src/main/kotlin/app/revanced/cli/MainCommand.kt

+10-13
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package app.revanced.cli
22

3+
import app.revanced.patcher.PatcherOptions
34
import app.revanced.patcher.annotation.Name
4-
import app.revanced.patcher.extensions.findAnnotationRecursively
55
import app.revanced.patcher.util.patch.implementation.JarPatchBundle
66
import app.revanced.utils.adb.Adb
77
import app.revanced.utils.patcher.addPatchesFiltered
@@ -54,21 +54,18 @@ internal object MainCommand : Runnable {
5454

5555
override fun run() {
5656
if (listOnly) {
57-
for (patchBundlePath in patchBundles)
58-
for (it in JarPatchBundle(patchBundlePath).loadPatches())
59-
println(
60-
"[available] ${
61-
it.findAnnotationRecursively(
62-
Name::class.java
63-
)?.name ?: it::class.java.name
64-
}"
65-
)
57+
for (patchBundlePath in patchBundles) for (it in JarPatchBundle(patchBundlePath).loadPatches()) {
58+
59+
// TODO: adjust extension methods to be able to do this
60+
val name = (it.annotations.find { it is Name } as? Name)?.name ?: it.simpleName
61+
println(
62+
"[available] $name"
63+
)
64+
}
6665
return
6766
}
6867

69-
val patcher = app.revanced.patcher.Patcher(
70-
inputFile, cacheDirectory, patchResources
71-
)
68+
val patcher = app.revanced.patcher.Patcher(PatcherOptions(inputFile, cacheDirectory, patchResources))
7269

7370
if (signatureCheck) {
7471
patcher.addPatchesFiltered()

src/main/kotlin/app/revanced/cli/Patcher.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ internal class Patcher {
3131
}
3232

3333
if (MainCommand.patchResources) {
34-
for (file in File(MainCommand.cacheDirectory).resolve("build/").listFiles(FileFilter { it.isDirectory })?.first()?.listFiles()!!) {
34+
for (file in File(MainCommand.cacheDirectory).resolve("build/").listFiles(FileFilter { it.isDirectory })
35+
?.first()?.listFiles()!!) {
3536
if (!file.isDirectory) {
3637
zipFileSystem.replaceFile(file.name, file.readBytes())
3738
continue

src/main/kotlin/app/revanced/utils/patcher/Patcher.kt

+13-27
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,23 @@ package app.revanced.utils.patcher
22

33
import app.revanced.cli.MainCommand
44
import app.revanced.patcher.Patcher
5-
import app.revanced.patcher.annotation.Compatibility
6-
import app.revanced.patcher.annotation.Name
75
import app.revanced.patcher.data.base.Data
8-
import app.revanced.patcher.extensions.findAnnotationRecursively
6+
import app.revanced.patcher.extensions.PatchExtensions.compatiblePackages
7+
import app.revanced.patcher.extensions.PatchExtensions.patchName
98
import app.revanced.patcher.patch.base.Patch
109
import app.revanced.patcher.util.patch.implementation.JarPatchBundle
1110

1211
fun Patcher.addPatchesFiltered(
13-
packageCompatibilityFilter: Boolean = true,
14-
packageVersionCompatibilityFilter: Boolean = true,
1512
includeFilter: Boolean = false
1613
) {
1714
val packageName = this.packageName
1815
val packageVersion = this.packageVersion
1916

2017
MainCommand.patchBundles.forEach { bundle ->
21-
val includedPatches = mutableListOf<Patch<Data>>()
22-
JarPatchBundle(bundle).loadPatches().forEach patch@{ p ->
23-
val patch = p.getDeclaredConstructor().newInstance()
24-
25-
val compatibilityAnnotation = patch.javaClass.findAnnotationRecursively(Compatibility::class.java)
26-
27-
val patchName = patch.javaClass.findAnnotationRecursively(Name::class.java)?.name ?: patch.javaClass.name
18+
val includedPatches = mutableListOf<Class<out Patch<Data>>>()
19+
JarPatchBundle(bundle).loadPatches().forEach patch@{ patch ->
20+
val compatiblePackages = patch.compatiblePackages
21+
val patchName = patch.patchName
2822

2923
val prefix = "[skipped] $patchName"
3024

@@ -33,24 +27,16 @@ fun Patcher.addPatchesFiltered(
3327
return@patch
3428
}
3529

36-
if (packageVersionCompatibilityFilter || packageCompatibilityFilter) {
37-
38-
if (compatibilityAnnotation == null) {
39-
println("$prefix: Missing compatibility annotation.")
30+
if (compatiblePackages == null) println("$prefix: Missing compatibility annotation. Continuing.")
31+
else compatiblePackages.forEach { compatiblePackage ->
32+
if (compatiblePackage.name != packageName) {
33+
println("$prefix: Package name not matching ${compatiblePackage.name}.")
4034
return@patch
4135
}
4236

43-
44-
compatibilityAnnotation.compatiblePackages.forEach { compatiblePackage ->
45-
if (packageCompatibilityFilter && compatiblePackage.name != packageName) {
46-
println("$prefix: Package name not matching ${compatiblePackage.name}.")
47-
return@patch
48-
}
49-
50-
if (packageVersionCompatibilityFilter && !compatiblePackage.versions.any { it == packageVersion }) {
51-
println("$prefix: Unsupported version.")
52-
return@patch
53-
}
37+
if (!compatiblePackage.versions.any { it == packageVersion }) {
38+
println("$prefix: Unsupported version.")
39+
return@patch
5440
}
5541
}
5642

src/main/kotlin/app/revanced/utils/signature/Signature.kt

+34-37
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,52 @@
11
package app.revanced.utils.signature
22

33
import app.revanced.patcher.Patcher
4-
import app.revanced.patcher.extensions.findAnnotationRecursively
5-
import app.revanced.patcher.signature.implementation.method.annotation.FuzzyPatternScanMethod
6-
import app.revanced.patcher.signature.implementation.method.annotation.MatchingMethod
74
import org.jf.dexlib2.iface.Method
85

96
object Signature {
107

118
fun checkSignatures(patcher: Patcher) {
9+
TODO()
10+
/**
1211
val failed = mutableListOf<String>()
1312
for (signature in patcher.resolveSignatures()) {
14-
val signatureClass = signature::class.java
15-
val signatureName =
16-
signatureClass.findAnnotationRecursively(app.revanced.patcher.annotation.Name::class.java)?.name
17-
?: signatureClass.name
18-
if (!signature.resolved) {
19-
failed.add(signatureName)
20-
continue
21-
}
22-
23-
val method = signature.result!!.method
24-
val matchingMethod =
25-
signatureClass.findAnnotationRecursively(MatchingMethod::class.java) ?: MatchingMethod()
26-
27-
println(
28-
"""
29-
[Signature] $signatureName
30-
[Method] ${matchingMethod.definingClass}->${matchingMethod.name}
31-
[Match] ${method.definingClass}->${method.toStr()}
32-
""".trimIndent()
33-
)
34-
35-
signatureClass.findAnnotationRecursively(FuzzyPatternScanMethod::class.java)?.let {
36-
val warnings = signature.result!!.scanResult.warnings!!
37-
println(
38-
"""
39-
[Warnings: ${warnings.count()}]
40-
${warnings.joinToString(separator = "\n") { warning -> "${warning.instructionIndex} / ${warning.patternIndex}: ${warning.wrongOpcode} (expected: ${warning.correctOpcode})" }}
41-
""".trimIndent()
42-
)
43-
}
13+
val signatureClass = signature::class.java
14+
val signatureName = signature.name ?: signatureClass.simpleName
15+
if (!signature.resolved) {
16+
failed.add(signatureName)
17+
continue
18+
}
19+
20+
val method = signature.result!!.method
21+
val matchingMethod = signature.matchingMethod ?: MatchingMethod()
22+
23+
println(
24+
"""
25+
[Signature] $signatureName
26+
[Method] ${matchingMethod.definingClass}->${matchingMethod.name}
27+
[Match] ${method.definingClass}->${method.toStr()}
28+
""".trimIndent()
29+
)
30+
31+
signature.fuzzyThreshold.let {
32+
val warnings = signature.result!!.scanResult.warnings!!
33+
println(
34+
"""
35+
[Warnings: ${warnings.count()}]
36+
${warnings.joinToString(separator = "\n") { warning -> "${warning.instructionIndex} / ${warning.patternIndex}: ${warning.wrongOpcode} (expected: ${warning.correctOpcode})" }}
37+
""".trimIndent()
38+
)
39+
}
4440
}
4541
4642
println(
47-
"""
48-
${"=".repeat(50)}
49-
[Failed signatures: ${failed.size}]
50-
${failed.joinToString(separator = "\n") { it }}
43+
"""
44+
${"=".repeat(50)}
45+
[Failed signatures: ${failed.size}]
46+
${failed.joinToString(separator = "\n") { it }}
5147
""".trimIndent()
5248
)
49+
*/
5350
}
5451

5552
private fun Method.toStr(): String {

0 commit comments

Comments
 (0)