github ReVanced/revanced-patcher v1.0.0

latest releases: v19.3.1, v19.3.1-dev.1, v19.3.0...
23 months ago

1.0.0 (2022-06-05)

Bug Fixes

  • compareSignatureToMethod not matching correctly in case opcodes are null (cca12aa)
  • ConcurrentModificationException while iterating through proxies and modifying it (6cb7cdb)
  • JarPatchBundle loading non-class files to class loader (849616d)
  • PackageMetadata (7399450)
  • replaceWith not replacing classes with used class proxies (4178a1e)
  • adding existing classes to the patchers cache (9659a61)
  • always return PatchResultSuccess on patch success (996c4ac)
  • applying no patches throwing error (5ca5a1c)
  • applyPatches not returning successful patches (f806cb3)
  • avoid ignoring test resources (fixes #1) (d5a3c76)
  • Classes not being written properly because of array shifting (6e4db11)
  • current must be calculated after increment (5f12bab)
  • failing tests temporarily (fc05fe7)
  • fix classes having multiple instances of fields (7cc8a7d)
  • fix classes having multiple method instances (398239d)
  • Fixed writer & signature resolver, improved tests & speed, minor refactoring (e6c2501)
  • fuzzy resolver warning params were turned around (e5bea06)
  • give ClassWriter a ClassReader for symtable (41749ba)
  • gradle: publish source and javadocs (c236ebe)
  • incorrect pattern offset (f3b5f67)
  • Io: fix finding classes by name (b957501)
  • Io: JAR loading and saving (#8) (310a7c4)
  • make methodMetadata nullable in MethodSignatureMetadata (4e56652)
  • make warnings nullable instead of lateinit (8f1a629)
  • match to correct signature method parameters (1ee2e4b)
  • MethodResolver: fix cd57a8c (cbd8df2)
  • MethodResolver: strip labels and line numbers so opcode patterns match (699c730)
  • MethodResolver: strip labels nodes so opcode patterns match (82c5306)
  • MethodSignature#resolved throwing an exception (c612676)
  • Move proxy package out of cache package (ce21bd6)
  • null check causing an exception (338bd9f)
  • nullable signature members (#10) (674461f)
  • Patch should have access to the Cache (4dd820f)
  • Patcher not writing resolved methods (fac44a5)
  • qualifying Element with wrong package (024fa86)
  • reaching all constructors not possible (c459beb)
  • reformat (trigger release) (bf48945)
  • remove broken code (0e72a6e)
  • remove dependency to fork of Apktool (11abc67)
  • remove leftover debug code (0f30eac)
  • return mutable set of classes (66a9b76)
  • returning failure on success (48c4ea2)
  • Search method map for existing class proxy (a1e909b)
  • set index for insertAt to 0 by default (d5b4c99)
  • set marklimit to Integer.MAX_VALUE (e6e468f)
  • string signature in SignatureResolver (e5ae970)
  • Suppress unused for addFiles (3d6a1d3)
  • throwing in case the opcode patterns do not match (3144ec8)
  • use Array instead of Iterable for methodParameters (dfac8f0)
  • using old instance of Androlib when saving (a4d8be2)
  • workflow on dev branch (428f7f4)
  • write all classes (f068fc8)

Code Refactoring

  • bump multidexlib2 to 2.5.2.r2 (a6c6b49)
  • Change all references from Array to Iterable (72f3cad)
  • convert Patch to abstract class (cb9b1b9)
  • Optimize Signature class (#11) (7faa001)
  • Rename net.revanced to app.revanced (7087230)

Features

  • Dependencies annotation (893d4c6)
  • PatchLoader (ec9fd15)
  • Add findParentMethod utility method (#4) (bbb2c54)
  • add MethodWalker (7755bbc)
  • add p naming scheme to smali compiler (79909cf)
  • add extensions for cloning methods (01bfbd6)
  • add findClass method with className (4087f49)
  • Add first tests (544bcf7)
  • add fuzzy resolver (7a56dca)
  • add immutableMethod (c63b20f)
  • add inline smali compiler (bfe4e3e)
  • add missing test for fields (6b8b057)
  • add or extension for AccessFlags (00c85b5)
  • Add patch metadata (642e903), closes ReVancedTeam/revanced-patches#1
  • add SafeClassWriter (6626014)
  • Add warnings for Fuzzy resolver (715a2ad)
  • allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called (1db735b)
  • Allow unknown opcodes using null (0e5f4ba)
  • Finish first patcher test (0d8d19e)
  • Improve SignatureResolver (139a23b)
  • migrate to DexPatchBundle and JarPatchBundle (8615798)
  • migrate to dexlib (3651981)
  • Minor refactor and return proxy, if class has been proxied already (4b26305)
  • optional forStaticMethod parameter for InlineSmaliCompiler.compileMethodInstructions (41e8860)
  • patch dependencies annotation and PatcherOptions (6c65952)
  • properly manage ClassProxy & add ProxyBackedClassList (6cb1fdf)
  • remaining mutable EncodedValue classes (3f97cc8)
  • string signature (#22) (612515a)
  • use annotations instead of metadata objects (d20f7fd)
  • utility functions to get metadata of patch & sigs (54511a4)

Performance Improvements

  • check type instead of class (c7ef264)
  • decode manifest only when not using resource patcher (4f60bea)
  • depend on androlib instead of ApkDecoder (cc9416d)
  • do not resolve empty signatures list (b1eebc9)
  • lazy-ify all mutable clones (d18a3b6)
  • optimize indexOf call away (9991f39)
  • use Set instead of List since there are no dupes (e65ebd2)
  • use String List and compare instead of any lambda (5bd416b)

Reverts

  • AccessFlag extensions not working with IDE (0bfb92a)
  • previous commits check for dupes in dexFile, not cache (e810197)

BREAKING CHANGES

  • arrayOf has to be changed to listOf.
  • Method signature of Patcher#save() was changed to comply with the changes of multidexlib2.
  • Removed usage of ASM library
  • Array was changed to IntArray. This breaks existing patches.
  • Package name was changed from "net.revanced" to "app.revanced"
  • Method signature of execute() was changed to include the cache, this will break existing implementations of the Patch class.
  • Patch class is now an abstract class. You must implement it. You can use anonymous implements, like done in the tests.

Don't miss a new revanced-patcher release

NewReleases is sending notifications on new releases.