From e756ac9920ca7a6a1a2f347d19d11e8795981dcb Mon Sep 17 00:00:00 2001 From: tillnelown <47001331+tillnelown@users.noreply.github.com> Date: Sat, 28 May 2022 18:21:13 +0200 Subject: [PATCH 1/8] Removes the uneeded revanced-patches dependency --- build.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 32555a1..73bfa86 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,7 +25,6 @@ repositories { dependencies { implementation("org.jetbrains.kotlin:kotlin-stdlib:1.6.21") implementation("app.revanced:revanced-patcher:1.0.0-dev.16") - implementation("app.revanced:revanced-patches:1.0.0-dev.11") implementation("info.picocli:picocli:4.6.3") From ace70e417fdf280c7630a5a89a773879fd240e96 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Wed, 1 Jun 2022 01:36:25 +0200 Subject: [PATCH 2/8] fix: migrate to latest patcher api changes --- build.gradle.kts | 2 +- .../kotlin/app/revanced/cli/MainCommand.kt | 23 +++---- src/main/kotlin/app/revanced/cli/Patcher.kt | 3 +- .../app/revanced/utils/patcher/Patcher.kt | 40 ++++-------- .../app/revanced/utils/signature/Signature.kt | 65 +++++++++---------- 5 files changed, 57 insertions(+), 76 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 73bfa86..c3b60ed 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -24,7 +24,7 @@ repositories { dependencies { implementation("org.jetbrains.kotlin:kotlin-stdlib:1.6.21") - implementation("app.revanced:revanced-patcher:1.0.0-dev.16") + implementation("app.revanced:revanced-patcher:1.0.0-dev.17") implementation("info.picocli:picocli:4.6.3") diff --git a/src/main/kotlin/app/revanced/cli/MainCommand.kt b/src/main/kotlin/app/revanced/cli/MainCommand.kt index c997122..bddc2c9 100644 --- a/src/main/kotlin/app/revanced/cli/MainCommand.kt +++ b/src/main/kotlin/app/revanced/cli/MainCommand.kt @@ -1,7 +1,7 @@ package app.revanced.cli +import app.revanced.patcher.PatcherOptions import app.revanced.patcher.annotation.Name -import app.revanced.patcher.extensions.findAnnotationRecursively import app.revanced.patcher.util.patch.implementation.JarPatchBundle import app.revanced.utils.adb.Adb import app.revanced.utils.patcher.addPatchesFiltered @@ -54,21 +54,18 @@ internal object MainCommand : Runnable { override fun run() { if (listOnly) { - for (patchBundlePath in patchBundles) - for (it in JarPatchBundle(patchBundlePath).loadPatches()) - println( - "[available] ${ - it.findAnnotationRecursively( - Name::class.java - )?.name ?: it::class.java.name - }" - ) + for (patchBundlePath in patchBundles) for (it in JarPatchBundle(patchBundlePath).loadPatches()) { + + // TODO: adjust extension methods to be able to do this + val name = (it.annotations.find { it is Name } as? Name)?.name ?: it.simpleName + println( + "[available] $name" + ) + } return } - val patcher = app.revanced.patcher.Patcher( - inputFile, cacheDirectory, patchResources - ) + val patcher = app.revanced.patcher.Patcher(PatcherOptions(inputFile, cacheDirectory, patchResources)) if (signatureCheck) { patcher.addPatchesFiltered() diff --git a/src/main/kotlin/app/revanced/cli/Patcher.kt b/src/main/kotlin/app/revanced/cli/Patcher.kt index 779f1d9..ea943a8 100644 --- a/src/main/kotlin/app/revanced/cli/Patcher.kt +++ b/src/main/kotlin/app/revanced/cli/Patcher.kt @@ -31,7 +31,8 @@ internal class Patcher { } if (MainCommand.patchResources) { - for (file in File(MainCommand.cacheDirectory).resolve("build/").listFiles(FileFilter { it.isDirectory })?.first()?.listFiles()!!) { + for (file in File(MainCommand.cacheDirectory).resolve("build/").listFiles(FileFilter { it.isDirectory }) + ?.first()?.listFiles()!!) { if (!file.isDirectory) { zipFileSystem.replaceFile(file.name, file.readBytes()) continue diff --git a/src/main/kotlin/app/revanced/utils/patcher/Patcher.kt b/src/main/kotlin/app/revanced/utils/patcher/Patcher.kt index e8aac78..7b1c126 100644 --- a/src/main/kotlin/app/revanced/utils/patcher/Patcher.kt +++ b/src/main/kotlin/app/revanced/utils/patcher/Patcher.kt @@ -2,29 +2,23 @@ package app.revanced.utils.patcher import app.revanced.cli.MainCommand import app.revanced.patcher.Patcher -import app.revanced.patcher.annotation.Compatibility -import app.revanced.patcher.annotation.Name import app.revanced.patcher.data.base.Data -import app.revanced.patcher.extensions.findAnnotationRecursively +import app.revanced.patcher.extensions.PatchExtensions.compatiblePackages +import app.revanced.patcher.extensions.PatchExtensions.patchName import app.revanced.patcher.patch.base.Patch import app.revanced.patcher.util.patch.implementation.JarPatchBundle fun Patcher.addPatchesFiltered( - packageCompatibilityFilter: Boolean = true, - packageVersionCompatibilityFilter: Boolean = true, includeFilter: Boolean = false ) { val packageName = this.packageName val packageVersion = this.packageVersion MainCommand.patchBundles.forEach { bundle -> - val includedPatches = mutableListOf>() - JarPatchBundle(bundle).loadPatches().forEach patch@{ p -> - val patch = p.getDeclaredConstructor().newInstance() - - val compatibilityAnnotation = patch.javaClass.findAnnotationRecursively(Compatibility::class.java) - - val patchName = patch.javaClass.findAnnotationRecursively(Name::class.java)?.name ?: patch.javaClass.name + val includedPatches = mutableListOf>>() + JarPatchBundle(bundle).loadPatches().forEach patch@{ patch -> + val compatiblePackages = patch.compatiblePackages + val patchName = patch.patchName val prefix = "[skipped] $patchName" @@ -33,24 +27,16 @@ fun Patcher.addPatchesFiltered( return@patch } - if (packageVersionCompatibilityFilter || packageCompatibilityFilter) { - - if (compatibilityAnnotation == null) { - println("$prefix: Missing compatibility annotation.") + if (compatiblePackages == null) println("$prefix: Missing compatibility annotation. Continuing.") + else compatiblePackages.forEach { compatiblePackage -> + if (compatiblePackage.name != packageName) { + println("$prefix: Package name not matching ${compatiblePackage.name}.") return@patch } - - compatibilityAnnotation.compatiblePackages.forEach { compatiblePackage -> - if (packageCompatibilityFilter && compatiblePackage.name != packageName) { - println("$prefix: Package name not matching ${compatiblePackage.name}.") - return@patch - } - - if (packageVersionCompatibilityFilter && !compatiblePackage.versions.any { it == packageVersion }) { - println("$prefix: Unsupported version.") - return@patch - } + if (!compatiblePackage.versions.any { it == packageVersion }) { + println("$prefix: Unsupported version.") + return@patch } } diff --git a/src/main/kotlin/app/revanced/utils/signature/Signature.kt b/src/main/kotlin/app/revanced/utils/signature/Signature.kt index 24afe9d..8057359 100644 --- a/src/main/kotlin/app/revanced/utils/signature/Signature.kt +++ b/src/main/kotlin/app/revanced/utils/signature/Signature.kt @@ -1,55 +1,52 @@ package app.revanced.utils.signature import app.revanced.patcher.Patcher -import app.revanced.patcher.extensions.findAnnotationRecursively -import app.revanced.patcher.signature.implementation.method.annotation.FuzzyPatternScanMethod -import app.revanced.patcher.signature.implementation.method.annotation.MatchingMethod import org.jf.dexlib2.iface.Method object Signature { fun checkSignatures(patcher: Patcher) { + TODO() + /** val failed = mutableListOf() for (signature in patcher.resolveSignatures()) { - val signatureClass = signature::class.java - val signatureName = - signatureClass.findAnnotationRecursively(app.revanced.patcher.annotation.Name::class.java)?.name - ?: signatureClass.name - if (!signature.resolved) { - failed.add(signatureName) - continue - } + val signatureClass = signature::class.java + val signatureName = signature.name ?: signatureClass.simpleName + if (!signature.resolved) { + failed.add(signatureName) + continue + } - val method = signature.result!!.method - val matchingMethod = - signatureClass.findAnnotationRecursively(MatchingMethod::class.java) ?: MatchingMethod() + val method = signature.result!!.method + val matchingMethod = signature.matchingMethod ?: MatchingMethod() - println( - """ - [Signature] $signatureName - [Method] ${matchingMethod.definingClass}->${matchingMethod.name} - [Match] ${method.definingClass}->${method.toStr()} - """.trimIndent() - ) + println( + """ + [Signature] $signatureName + [Method] ${matchingMethod.definingClass}->${matchingMethod.name} + [Match] ${method.definingClass}->${method.toStr()} + """.trimIndent() + ) - signatureClass.findAnnotationRecursively(FuzzyPatternScanMethod::class.java)?.let { - val warnings = signature.result!!.scanResult.warnings!! - println( - """ - [Warnings: ${warnings.count()}] - ${warnings.joinToString(separator = "\n") { warning -> "${warning.instructionIndex} / ${warning.patternIndex}: ${warning.wrongOpcode} (expected: ${warning.correctOpcode})" }} - """.trimIndent() - ) - } + signature.fuzzyThreshold.let { + val warnings = signature.result!!.scanResult.warnings!! + println( + """ + [Warnings: ${warnings.count()}] + ${warnings.joinToString(separator = "\n") { warning -> "${warning.instructionIndex} / ${warning.patternIndex}: ${warning.wrongOpcode} (expected: ${warning.correctOpcode})" }} + """.trimIndent() + ) + } } println( - """ - ${"=".repeat(50)} - [Failed signatures: ${failed.size}] - ${failed.joinToString(separator = "\n") { it }} + """ + ${"=".repeat(50)} + [Failed signatures: ${failed.size}] + ${failed.joinToString(separator = "\n") { it }} """.trimIndent() ) + */ } private fun Method.toStr(): String { From bd185133bcd14101e7bbb067df995010f7519a6a Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 31 May 2022 23:55:55 +0000 Subject: [PATCH 3/8] chore(release): 1.1.6-dev.1 [skip ci] ## [1.1.6-dev.1](https://github.com/revanced/revanced-cli/compare/v1.1.5...v1.1.6-dev.1) (2022-05-31) ### Bug Fixes * migrate to latest patcher api changes ([ace70e4](https://github.com/revanced/revanced-cli/commit/ace70e417fdf280c7630a5a89a773879fd240e96)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04a5096..86a47f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [1.1.6-dev.1](https://github.com/revanced/revanced-cli/compare/v1.1.5...v1.1.6-dev.1) (2022-05-31) + + +### Bug Fixes + +* migrate to latest patcher api changes ([ace70e4](https://github.com/revanced/revanced-cli/commit/ace70e417fdf280c7630a5a89a773879fd240e96)) + ## [1.1.5](https://github.com/revanced/revanced-cli/compare/v1.1.4...v1.1.5) (2022-05-27) diff --git a/gradle.properties b/gradle.properties index b78f55e..20bdfa3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ kotlin.code.style = official -version = 1.1.5 +version = 1.1.6-dev.1 From 54c0a03d44c8d1b586bc487ee1ca71859d6f0b57 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Fri, 3 Jun 2022 17:51:13 +0200 Subject: [PATCH 4/8] feat: add path for `cacheDirectory` and enable resource patching by default --- src/main/kotlin/app/revanced/cli/MainCommand.kt | 10 +++++----- src/main/kotlin/app/revanced/cli/Patcher.kt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/app/revanced/cli/MainCommand.kt b/src/main/kotlin/app/revanced/cli/MainCommand.kt index bddc2c9..df51b35 100644 --- a/src/main/kotlin/app/revanced/cli/MainCommand.kt +++ b/src/main/kotlin/app/revanced/cli/MainCommand.kt @@ -22,11 +22,11 @@ internal object MainCommand : Runnable { @Option(names = ["-p", "--patches"], description = ["One or more bundles of patches"]) internal var patchBundles = arrayOf() - @Option(names = ["-t", "--temp-dir"], description = ["Temporal resource cache directory"], required = true) - internal lateinit var cacheDirectory: String + @Option(names = ["-t", "--temp-dir"], description = ["Temporal resource cache directory"]) + internal var cacheDirectory = "revanced-cache" - @Option(names = ["-r", "--resource-patcher"], description = ["Enable patching resources"]) - internal var patchResources: Boolean = false + @Option(names = ["-r", "--resource-patcher"], description = ["Disable patching resources"]) + internal var disableResourcePatching: Boolean = false @Option( names = ["-c", "--clean"], @@ -65,7 +65,7 @@ internal object MainCommand : Runnable { return } - val patcher = app.revanced.patcher.Patcher(PatcherOptions(inputFile, cacheDirectory, patchResources)) + val patcher = app.revanced.patcher.Patcher(PatcherOptions(inputFile, cacheDirectory, !disableResourcePatching)) if (signatureCheck) { patcher.addPatchesFiltered() diff --git a/src/main/kotlin/app/revanced/cli/Patcher.kt b/src/main/kotlin/app/revanced/cli/Patcher.kt index ea943a8..f6d7589 100644 --- a/src/main/kotlin/app/revanced/cli/Patcher.kt +++ b/src/main/kotlin/app/revanced/cli/Patcher.kt @@ -30,7 +30,7 @@ internal class Patcher { zipFileSystem.replaceFile(name, data.data) } - if (MainCommand.patchResources) { + if (!MainCommand.disableResourcePatching) { for (file in File(MainCommand.cacheDirectory).resolve("build/").listFiles(FileFilter { it.isDirectory }) ?.first()?.listFiles()!!) { if (!file.isDirectory) { From 87c0e05d9c1ae4d44558739351e760940ae243d5 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 4 Jun 2022 00:32:25 +0000 Subject: [PATCH 5/8] chore(release): 1.2.0-dev.1 [skip ci] # [1.2.0-dev.1](https://github.com/revanced/revanced-cli/compare/v1.1.6-dev.1...v1.2.0-dev.1) (2022-06-04) ### Features * add path for `cacheDirectory` and enable resource patching by default ([54c0a03](https://github.com/revanced/revanced-cli/commit/54c0a03d44c8d1b586bc487ee1ca71859d6f0b57)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 86a47f0..d09f3e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [1.2.0-dev.1](https://github.com/revanced/revanced-cli/compare/v1.1.6-dev.1...v1.2.0-dev.1) (2022-06-04) + + +### Features + +* add path for `cacheDirectory` and enable resource patching by default ([54c0a03](https://github.com/revanced/revanced-cli/commit/54c0a03d44c8d1b586bc487ee1ca71859d6f0b57)) + ## [1.1.6-dev.1](https://github.com/revanced/revanced-cli/compare/v1.1.5...v1.1.6-dev.1) (2022-05-31) diff --git a/gradle.properties b/gradle.properties index 20bdfa3..651dad4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ kotlin.code.style = official -version = 1.1.6-dev.1 +version = 1.2.0-dev.1 From 4758289d681fff71b058b32cdcdacee0235632ab Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Sat, 4 Jun 2022 02:33:24 +0200 Subject: [PATCH 6/8] chore: bump patcher dependency --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index c3b60ed..ebbe3a9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -24,7 +24,7 @@ repositories { dependencies { implementation("org.jetbrains.kotlin:kotlin-stdlib:1.6.21") - implementation("app.revanced:revanced-patcher:1.0.0-dev.17") + implementation("app.revanced:revanced-patcher:1.0.0-dev.18") implementation("info.picocli:picocli:4.6.3") From 1b645c67db58eb4d49b5290fd247507c9b43a9c6 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Sun, 5 Jun 2022 07:56:27 +0200 Subject: [PATCH 7/8] feat: debugging option --- src/main/kotlin/app/revanced/cli/MainCommand.kt | 3 +++ src/main/kotlin/app/revanced/utils/patcher/Patcher.kt | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/app/revanced/cli/MainCommand.kt b/src/main/kotlin/app/revanced/cli/MainCommand.kt index df51b35..b8ab9c4 100644 --- a/src/main/kotlin/app/revanced/cli/MainCommand.kt +++ b/src/main/kotlin/app/revanced/cli/MainCommand.kt @@ -52,6 +52,9 @@ internal object MainCommand : Runnable { @Option(names = ["-d", "--deploy-on"], description = ["If specified, deploy to adb device with given name"]) internal var deploy: String? = null + @Option(names = ["-b", "--debugging"], description = ["Disable patch version compatibility"]) + internal var debugging: Boolean = false + override fun run() { if (listOnly) { for (patchBundlePath in patchBundles) for (it in JarPatchBundle(patchBundlePath).loadPatches()) { diff --git a/src/main/kotlin/app/revanced/utils/patcher/Patcher.kt b/src/main/kotlin/app/revanced/utils/patcher/Patcher.kt index 7b1c126..fee8d8f 100644 --- a/src/main/kotlin/app/revanced/utils/patcher/Patcher.kt +++ b/src/main/kotlin/app/revanced/utils/patcher/Patcher.kt @@ -34,7 +34,7 @@ fun Patcher.addPatchesFiltered( return@patch } - if (!compatiblePackage.versions.any { it == packageVersion }) { + if (!(MainCommand.debugging || compatiblePackage.versions.any { it == packageVersion })) { println("$prefix: Unsupported version.") return@patch } From 1c5e5e249d9066f227c709f31883b58037e50bc2 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 5 Jun 2022 05:58:42 +0000 Subject: [PATCH 8/8] chore(release): 1.2.0-dev.2 [skip ci] # [1.2.0-dev.2](https://github.com/revanced/revanced-cli/compare/v1.2.0-dev.1...v1.2.0-dev.2) (2022-06-05) ### Features * debugging option ([1b645c6](https://github.com/revanced/revanced-cli/commit/1b645c67db58eb4d49b5290fd247507c9b43a9c6)) --- CHANGELOG.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d09f3e2..a120a6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [1.2.0-dev.2](https://github.com/revanced/revanced-cli/compare/v1.2.0-dev.1...v1.2.0-dev.2) (2022-06-05) + + +### Features + +* debugging option ([1b645c6](https://github.com/revanced/revanced-cli/commit/1b645c67db58eb4d49b5290fd247507c9b43a9c6)) + # [1.2.0-dev.1](https://github.com/revanced/revanced-cli/compare/v1.1.6-dev.1...v1.2.0-dev.1) (2022-06-04) diff --git a/gradle.properties b/gradle.properties index 651dad4..b78453c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ kotlin.code.style = official -version = 1.2.0-dev.1 +version = 1.2.0-dev.2