mirror of
https://github.com/ReVanced/revanced-patcher.git
synced 2026-01-11 22:06:18 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3d61dacbda | ||
|
|
c20dfe12d5 | ||
|
|
78663cde88 | ||
|
|
dde5385232 | ||
|
|
930768dfb3 |
19
CHANGELOG.md
19
CHANGELOG.md
@@ -1,3 +1,22 @@
|
||||
# [1.10.0](https://github.com/revanced/revanced-patcher/compare/v1.9.0...v1.10.0) (2022-06-23)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* improve logging ([c20dfe1](https://github.com/revanced/revanced-patcher/commit/c20dfe12d5c737264b844e6634de11bf1e1629f0))
|
||||
|
||||
# [1.9.0](https://github.com/revanced/revanced-patcher/compare/v1.8.0...v1.9.0) (2022-06-22)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* callback for each file instead of class ([930768d](https://github.com/revanced/revanced-patcher/commit/930768dfb31dc5fa6c248050b08ac117c40ee0a3))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* yield the patch result ([dde5385](https://github.com/revanced/revanced-patcher/commit/dde5385232abddc8a85d6e9a939549b71dd9130e))
|
||||
|
||||
# [1.8.0](https://github.com/revanced/revanced-patcher/compare/v1.7.2...v1.8.0) (2022-06-22)
|
||||
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
kotlin.code.style = official
|
||||
version = 1.8.0
|
||||
version = 1.10.0
|
||||
|
||||
@@ -62,7 +62,7 @@ class Patcher(private val options: PatcherOptions) {
|
||||
val packageMetadata = PackageMetadata()
|
||||
|
||||
if (options.patchResources) {
|
||||
logger.info("Decoding resources using Androlib, this may take a long time...")
|
||||
logger.info("Decoding resources")
|
||||
|
||||
// decode resources to cache directory
|
||||
androlib.decodeManifestWithResources(extInputFile, outDir, resourceTable)
|
||||
@@ -78,7 +78,7 @@ class Patcher(private val options: PatcherOptions) {
|
||||
}
|
||||
|
||||
} else {
|
||||
logger.info("Decoding AndroidManifest.xml manually because resource patching is disabled")
|
||||
logger.info("Only decoding AndroidManifest.xml because resource patching is disabled")
|
||||
|
||||
// create decoder for the resource table
|
||||
val decoder = ResAttrDecoder()
|
||||
@@ -102,7 +102,7 @@ class Patcher(private val options: PatcherOptions) {
|
||||
packageMetadata.metaInfo.versionInfo = resourceTable.versionInfo
|
||||
packageMetadata.metaInfo.sdkInfo = resourceTable.sdkInfo
|
||||
|
||||
logger.info("Reading input as dex file")
|
||||
logger.info("Reading dex files")
|
||||
|
||||
// read dex files
|
||||
val dexFile = MultiDexIO.readDexFile(true, options.inputFile, NAMER, null, null)
|
||||
@@ -128,6 +128,8 @@ class Patcher(private val options: PatcherOptions) {
|
||||
callback: (File) -> Unit
|
||||
) {
|
||||
for (file in files) {
|
||||
callback(file)
|
||||
|
||||
for (classDef in MultiDexIO.readDexFile(true, file, NAMER, null, null).classes) {
|
||||
val type = classDef.type
|
||||
|
||||
@@ -138,7 +140,6 @@ class Patcher(private val options: PatcherOptions) {
|
||||
logger.trace("Merging $type")
|
||||
data.bytecodeData.classes.internalClasses.add(classDef)
|
||||
|
||||
callback(file)
|
||||
|
||||
continue
|
||||
}
|
||||
@@ -150,7 +151,6 @@ class Patcher(private val options: PatcherOptions) {
|
||||
val index = existingClass.second
|
||||
data.bytecodeData.classes.internalClasses[index] = classDef
|
||||
|
||||
callback(file)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -164,7 +164,6 @@ class Patcher(private val options: PatcherOptions) {
|
||||
var resourceFile: File? = null
|
||||
|
||||
if (options.patchResources) {
|
||||
logger.info("Patching resources")
|
||||
val cacheDirectory = ExtFile(options.resourceCacheDirectory)
|
||||
|
||||
val androlibResources = AndrolibResources().also { resources ->
|
||||
@@ -197,7 +196,7 @@ class Patcher(private val options: PatcherOptions) {
|
||||
)
|
||||
}.toTypedArray()
|
||||
|
||||
logger.trace("Packaging using aapt")
|
||||
logger.info("Compiling resources")
|
||||
androlibResources.aaptPackage(
|
||||
aaptFile, manifestFile, resDirectory, null, null, includedFiles
|
||||
)
|
||||
@@ -251,8 +250,6 @@ class Patcher(private val options: PatcherOptions) {
|
||||
): PatchResult {
|
||||
val patchName = patch.patchName
|
||||
|
||||
logger.trace("Applying patch $patchName")
|
||||
|
||||
// if the patch has already applied silently skip it
|
||||
if (appliedPatches.contains(patchName)) {
|
||||
logger.trace("Skipping patch $patchName because it has already been applied")
|
||||
@@ -302,29 +299,23 @@ class Patcher(private val options: PatcherOptions) {
|
||||
/**
|
||||
* Apply patches loaded into the patcher.
|
||||
* @param stopOnError If true, the patches will stop on the first error.
|
||||
* @return A map of [PatchResultSuccess]. If the [Patch] was successfully applied,
|
||||
* [PatchResultSuccess] will always be returned to the wrapping Result object.
|
||||
* If the [Patch] failed to apply, an Exception will always be returned to the wrapping Result object.
|
||||
* @return A pair of the name of the [Patch] and its [PatchResult].
|
||||
*/
|
||||
fun applyPatches(
|
||||
stopOnError: Boolean = false, callback: (Class<out Patch<Data>>, Boolean) -> Unit = { _, _ -> }
|
||||
): Map<String, Result<PatchResultSuccess>> {
|
||||
fun applyPatches(stopOnError: Boolean = false) = sequence {
|
||||
logger.trace("Applying all patches")
|
||||
val appliedPatches = mutableListOf<String>()
|
||||
|
||||
return buildMap {
|
||||
for (patch in data.patches) {
|
||||
val result = applyPatch(patch, appliedPatches)
|
||||
for (patch in data.patches) {
|
||||
val patchResult = applyPatch(patch, appliedPatches)
|
||||
|
||||
this[patch.patchName] = if (result.isSuccess()) {
|
||||
Result.success(result.success()!!)
|
||||
} else {
|
||||
Result.failure(result.error()!!)
|
||||
}
|
||||
|
||||
callback(patch, result.isSuccess())
|
||||
if (stopOnError && result.isError()) break
|
||||
val result = if (patchResult.isSuccess()) {
|
||||
Result.success(patchResult.success()!!)
|
||||
} else {
|
||||
Result.failure(patchResult.error()!!)
|
||||
}
|
||||
|
||||
yield(patch.patchName to result)
|
||||
if (stopOnError && patchResult.isError()) break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user