revanced-patcher/CHANGELOG.md

112 KiB

19.3.1 (2024-02-14)

19.3.1-dev.1 (2024-02-14)

19.3.0 (2024-02-14)

Bug Fixes

  • Use Patch#toString to get patch class name, when no name available (c9a8260)

Features

  • Read and write arbitrary files in APK files (f1d7217)

19.3.0-dev.2 (2024-02-13)

19.3.0-dev.1 (2024-02-13)

Features

  • Read and write arbitrary files in APK files (f1d7217)

19.2.1-dev.1 (2024-01-27)

Bug Fixes

  • Use Patch#toString to get patch class name, when no name available (c9a8260)

19.2.0 (2023-12-28)

Bug Fixes

  • Accept PatchSet in PatchesConsumer#acceptPatches (716825f)

Features

  • Add PatchExtensions#registerNewPatchOption function to simplify instantiation and registration of patch options (4a91845)

19.2.0-dev.1 (2023-12-22)

Features

  • Add PatchExtensions#registerNewPatchOption function to simplify instantiation and registration of patch options (4a91845)

19.1.1-dev.1 (2023-12-01)

Bug Fixes

  • Accept PatchSet in PatchesConsumer#acceptPatches (716825f)

19.1.0 (2023-12-01)

Features

  • Add constructor to initialize patches without annotations (462fbe2)
  • Retrieve annotations in super and interface classes (7aeae93)

Performance Improvements

  • Use a hash set for fast lookup (f1de9b3)

19.1.0-dev.1 (2023-11-29)

Features

  • Add constructor to initialize patches without annotations (462fbe2)
  • Retrieve annotations in super and interface classes (7aeae93)

Performance Improvements

  • Use a hash set for fast lookup (f1de9b3)

19.0.0 (2023-10-24)

Features

  • Add PatchOption#valueType to handle type erasure (a46e948)

BREAKING CHANGES

  • This changes the signature of the PatchOption constructor.

19.0.0-dev.1 (2023-10-24)

Features

  • Add PatchOption#valueType to handle type erasure (a46e948)

BREAKING CHANGES

  • This changes the signature of the PatchOption constructor.

18.0.0 (2023-10-22)

Bug Fixes

  • Do not set patch fields if they are empty (a76ac04)
  • Only allow setting MethodFingerprint#result privately (aed1eac)

Code Refactoring

  • Change PatchOption from abstract to open class (09cd6aa)

  • Change data classes to actual classes (6192089)

  • Convert extension functions to member functions (e2ca507)

  • Move files to simplify package structure (124a2e9)

  • Remove deprecated classes and members (a4212f6)

  • refactor!: Remove Fingerprint interface (54a2f8f)

Features

  • Add function to reset options to their default value (ebbaafb)
  • Add function to reset options to their default value (e6de90d)
  • Add getter for default option value (c7922e9)
  • Make PatchOption#values nullable (56ce9ec)
  • Name patch option value validator property correctly (caa634f)
  • Remove patch annotation processor (4456031)
  • Use a map for PatchOption#values (54ac139)

Performance Improvements

  • Run the garbage collector after writing dex files (d9fb241)

BREAKING CHANGES

  • The MethodFingerprint#result member can now only be set inside MethodFingerprint.
  • The Fingerprint interface is no longer present.
  • Some extension functions are now member functions.
  • This gets rid of data class members.
  • Some deprecated classes and members are not present anymore.
  • Classes and members have changed packages.
  • This gets rid of the existing basic implementations of the PatchOptions type and moves extension functions.
  • This changes the getter name of the property.
  • Various patch constructor signatures have changed.

18.0.0-dev.6 (2023-10-22)

Bug Fixes

  • Only allow setting MethodFingerprint#result privately (aed1eac)

Code Refactoring

  • Change data classes to actual classes (6192089)

  • Convert extension functions to member functions (e2ca507)

  • Move files to simplify package structure (124a2e9)

  • Remove deprecated classes and members (a4212f6)

  • refactor!: Remove Fingerprint interface (54a2f8f)

BREAKING CHANGES

  • The MethodFingerprint#result member can now only be set inside MethodFingerprint.
  • The Fingerprint interface is no longer present.
  • Some extension functions are now member functions.
  • This gets rid of data class members.
  • Some deprecated classes and members are not present anymore.
  • Classes and members have changed packages.

18.0.0-dev.5 (2023-10-22)

Bug Fixes

  • Do not set patch fields if they are empty (a76ac04)

18.0.0-dev.4 (2023-10-22)

Features

  • Use a map for PatchOption#values (54ac139)

18.0.0-dev.3 (2023-10-22)

Features

  • Make PatchOption#values nullable (56ce9ec)

18.0.0-dev.2 (2023-10-22)

Code Refactoring

  • Change PatchOption from abstract to open class (09cd6aa)

Features

  • Add function to reset options to their default value (ebbaafb)
  • Add function to reset options to their default value (e6de90d)
  • Add getter for default option value (c7922e9)
  • Name patch option value validator property correctly (caa634f)

BREAKING CHANGES

  • This gets rid of the existing basic implementations of the PatchOptions type and moves extension functions.
  • This changes the getter name of the property.

18.0.0-dev.1 (2023-10-14)

Features

  • Remove patch annotation processor (4456031)

BREAKING CHANGES

  • Various patch constructor signatures have changed.

17.0.1-dev.1 (2023-10-10)

Performance Improvements

  • Run the garbage collector after writing dex files (d9fb241)

17.0.0 (2023-10-09)

Features

  • Add option to use single threaded writer for dex files (77dbee3)

BREAKING CHANGES

  • This commit gets rid of deprecated constructors.

17.0.0-dev.1 (2023-10-09)

Features

  • Add option to use single threaded writer for dex files (77dbee3)

BREAKING CHANGES

  • This commit gets rid of deprecated constructors.

16.0.2 (2023-10-06)

Performance Improvements

  • Use a map to merge integrations classes (6059d3c)

16.0.2-dev.1 (2023-10-06)

Performance Improvements

  • Use a map to merge integrations classes (6059d3c)

16.0.1 (2023-10-05)

Bug Fixes

  • Merge integrations when required (06c2b76)

16.0.1-dev.1 (2023-10-05)

Bug Fixes

  • Merge integrations when required (06c2b76)

16.0.0 (2023-10-04)

Bug Fixes

  • Use correct super class type (f590436)

BREAKING CHANGES

  • This changes the super classes of some PatchOptionException classes

16.0.0-dev.1 (2023-10-04)

Bug Fixes

  • Use correct super class type (f590436)

BREAKING CHANGES

  • This changes the super classes of some PatchOptionException classes

15.0.3 (2023-10-01)

Bug Fixes

  • Fix SMALI compilation on devices with RTL language (#242) (356f1f1)

15.0.3-dev.1 (2023-09-29)

Bug Fixes

  • Fix SMALI compilation on devices with RTL language (#242) (356f1f1)

15.0.2 (2023-09-27)

Performance Improvements

  • Do not unnecessary resolve fingeprints twice (#241) (4d6e08a)

15.0.2-dev.1 (2023-09-26)

Performance Improvements

  • Do not unnecessary resolve fingeprints twice (#241) (4d6e08a)

15.0.1 (2023-09-20)

Bug Fixes

15.0.1-dev.1 (2023-09-20)

Bug Fixes

15.0.0 (2023-09-18)

Bug Fixes

  • Account for source patch dependency for tests (6918418)
  • Always make the generated patch depend on the source patch (8de3063)
  • Catch correct exception (637d487)
  • Delegate PatchBundleLoader by mutable set of patches (9a109c1)
  • Do not resolve the proxied patch to the proxy in the dependency list (e112837)
  • Do not set CompatiblePackage.versions if @CompatiblePackage.versions is empty (6b1e0a1)
  • Filter for patches correctly (4bc4b0d)
  • Find dependency in context.allPatches (670f015)
  • Log the correct patch names (9fdb8f0)
  • Make CompatiblePackage.versions a property (67b7dff)
  • Print patch name instead of class name (4e7811e)
  • Print stack trace of exception (aa71146)
  • Run code-block if executablePatches does not yet contain patch (1d7aeca)
  • Suppress logger when loading patches in PatchBundleLoader (72c9eb2)
  • Use correct module name (080fbe9)

Code Refactoring

  • Internalize processor constructor (a802d0d)

  • feat Use Set as super type for PatchBundleLoader (4b76d19)

  • feat!: Add patch annotation processor (3fc6a13)

  • feat!: Remove patch annotations (3b4db3d)

Features

BREAKING CHANGES

  • This gets rid of the public constructor.
  • PatchBundleLoader is not a map anymore
  • This renames packages and the Maven package.
  • The manifest for patches has been removed, and the properties have been added to patches. Patches are now OptionsContainer. The @Patch annotation has been removed in favour of the @Patch annotation from the annotation processor.
  • Patch annotations have been removed. PatcherException is now thrown in various places. PatchBundleLoader is now a map of patches associated by their name. Patches are now instances.

15.0.0-dev.4 (2023-09-13)

Bug Fixes

  • Account for source patch dependency for tests (6918418)
  • Always make the generated patch depend on the source patch (8de3063)
  • Catch correct exception (637d487)
  • Delegate PatchBundleLoader by mutable set of patches (9a109c1)
  • Do not resolve the proxied patch to the proxy in the dependency list (e112837)
  • Do not set CompatiblePackage.versions if @CompatiblePackage.versions is empty (6b1e0a1)
  • Filter for patches correctly (4bc4b0d)
  • Find dependency in context.allPatches (670f015)
  • Log the correct patch names (9fdb8f0)
  • Print patch name instead of class name (4e7811e)
  • Print stack trace of exception (aa71146)
  • Run code-block if executablePatches does not yet contain patch (1d7aeca)
  • Suppress logger when loading patches in PatchBundleLoader (72c9eb2)

Code Refactoring

  • Internalize processor constructor (a802d0d)

BREAKING CHANGES

  • This gets rid of the public constructor.

15.0.0-dev.3 (2023-09-06)

Bug Fixes

  • Make CompatiblePackage.versions a property (67b7dff)

  • Use correct module name (080fbe9)

  • feat Use Set as super type for PatchBundleLoader (4b76d19)

BREAKING CHANGES

  • PatchBundleLoader is not a map anymore
  • This renames packages and the Maven package.

15.0.0-dev.2 (2023-09-06)

15.0.0-dev.1 (2023-09-04)

  • feat!: Add patch annotation processor (3fc6a13)
  • feat!: Remove patch annotations (3b4db3d)

Features

BREAKING CHANGES

  • The manifest for patches has been removed, and the properties have been added to patches. Patches are now OptionsContainer. The @Patch annotation has been removed in favour of the @Patch annotation from the annotation processor.
  • Patch annotations have been removed. PatcherException is now thrown in various places. PatchBundleLoader is now a map of patches associated by their name. Patches are now instances.

14.2.2 (2023-08-30)

Bug Fixes

  • allow setting DexClassLoader.optimizedDirectory (11a3378)

14.2.2-dev.1 (2023-08-29)

Bug Fixes

  • allow setting DexClassLoader.optimizedDirectory (11a3378)

14.2.1 (2023-08-27)

Bug Fixes

  • do not flag resource table as sparse when main package is not loaded (b832812)

14.2.1-dev.1 (2023-08-27)

Bug Fixes

  • do not flag resource table as sparse when main package is not loaded (b832812)

14.2.0 (2023-08-27)

Features

  • load patches in lexicographical order (e8f2087)
  • log when merging integrations (983563e)

Performance Improvements

  • compare types of classes (55d6945)

14.2.0-dev.3 (2023-08-26)

Performance Improvements

  • compare types of classes (55d6945)

14.2.0-dev.2 (2023-08-26)

Features

  • log when merging integrations (983563e)

14.2.0-dev.1 (2023-08-25)

Features

  • load patches in lexicographical order (e8f2087)

14.1.0 (2023-08-24)

Bug Fixes

  • move version properties file to correct package (e985676)

Features

  • properly make use of logging facade (ba56a6a)

14.1.0-dev.1 (2023-08-24)

Features

  • properly make use of logging facade (ba56a6a)

14.0.1-dev.1 (2023-08-23)

Bug Fixes

  • move version properties file to correct package (e985676)

14.0.0 (2023-08-22)

Bug Fixes

  • log decoding resources after logging deleting resource cache directory (db62a16)
  • only emit closed patches that did not throw an exception with the @Patch annotation (5938f6b)
  • supply the parent classloader to DexClassLoader (0f15077)

Code Refactoring

  • improve structure and public API (6b8977f)

Features

  • do not log instantiation of ReVanced Patcher (273dd8d)

BREAKING CHANGES

  • Various public APIs have been changed. The Version annotation has been removed. Patches do not return anything anymore and instead throw PatchException. Multiple patch bundles can now be loaded in a single ClassLoader to bypass class loader isolation.

14.0.0-dev.4 (2023-08-22)

Bug Fixes

  • only emit closed patches that did not throw an exception with the @Patch annotation (5938f6b)

14.0.0-dev.3 (2023-08-20)

Bug Fixes

  • supply the parent classloader to DexClassLoader (0f15077)

Features

  • do not log instantiation of ReVanced Patcher (273dd8d)

14.0.0-dev.2 (2023-08-19)

14.0.0-dev.1 (2023-08-18)

Bug Fixes

  • log decoding resources after logging deleting resource cache directory (db62a16)

Code Refactoring

  • improve structure and public API (6b8977f)

BREAKING CHANGES

  • Various public APIs have been changed. The Version annotation has been removed. Patches do not return anything anymore and instead throw PatchException. Multiple patch bundles can now be loaded in a single ClassLoader to bypass class loader isolation.

13.0.0 (2023-08-14)

Bug Fixes

  • decode in correct order (8fb2f2d)

  • disable correct loggers (c2d89c6)

  • get framework ids to compile resources (f2cb7ee)

  • only enable logging for ReVanced (783ccf8)

  • set package metadata correctly (02d6ff1)

  • build(Needs bump)!: Bump dependencies (d5f89a9)

BREAKING CHANGES

  • This bump updates smali, a crucial dependency

13.0.0-dev.3 (2023-08-14)

Bug Fixes

  • decode in correct order (8fb2f2d)
  • only enable logging for ReVanced (783ccf8)

13.0.0-dev.2 (2023-08-12)

Bug Fixes

  • disable correct loggers (c2d89c6)
  • get framework ids to compile resources (f2cb7ee)
  • set package metadata correctly (02d6ff1)

13.0.0-dev.1 (2023-08-11)

  • build(Needs bump)!: Bump dependencies (d5f89a9)

BREAKING CHANGES

  • This bump updates smali, a crucial dependency

12.1.1 (2023-08-03)

Bug Fixes

  • clear method lookup maps before initializing them (#210) (746544f)

12.1.1-dev.2 (2023-08-03)

12.1.1-dev.1 (2023-08-03)

Bug Fixes

  • clear method lookup maps before initializing them (#210) (746544f)

12.1.0 (2023-08-03)

Features

  • add MutableMethod.getInstructions extension function (fae4029)

12.1.0-dev.2 (2023-08-03)

12.1.0-dev.1 (2023-08-01)

Features

  • add MutableMethod.getInstructions extension function (fae4029)

12.0.0 (2023-07-30)

Bug Fixes

  • correct access flags of PackageMetadata (416d691)
  • set resource table via resource decoder (e0f8e1b)

Features

BREAKING CHANGES

  • This removes the previously available Path option

12.0.0-dev.2 (2023-07-28)

Features

  • Deprecate Version annotation (400442f)

12.0.0-dev.1 (2023-07-26)

Bug Fixes

  • correct access flags of PackageMetadata (416d691)
  • set resource table via resource decoder (e0f8e1b)

Features

BREAKING CHANGES

  • This removes the previously available Path option

11.0.4 (2023-07-01)

Bug Fixes

11.0.4-dev.1 (2023-07-01)

Bug Fixes

11.0.3 (2023-06-30)

Bug Fixes

11.0.3-dev.1 (2023-06-28)

Bug Fixes

11.0.2 (2023-06-27)

Bug Fixes

  • catch exceptions from closing patches (d5d6f85)
  • do not load annotations as patches (519359a)
  • only close succeeded patches (b8151eb)
  • use versionCode if versionName is unavailable (6e1b647)

Performance Improvements

  • resolve fingerprints using method maps (#185) (d718134)

11.0.2-dev.4 (2023-06-27)

Bug Fixes

  • do not load annotations as patches (519359a)

11.0.2-dev.3 (2023-06-27)

Performance Improvements

  • resolve fingerprints using method maps (#185) (d718134)

11.0.2-dev.2 (2023-06-18)

Bug Fixes

  • use versionCode if versionName is unavailable (6e1b647)

11.0.2-dev.1 (2023-06-14)

Bug Fixes

  • catch exceptions from closing patches (d5d6f85)
  • only close succeeded patches (b8151eb)

11.0.1 (2023-06-12)

Bug Fixes

  • revert using OutputStream.nullOutputStream (f02a426)

11.0.1-dev.1 (2023-06-12)

Bug Fixes

  • revert using OutputStream.nullOutputStream (f02a426)

11.0.0 (2023-06-10)

Bug Fixes

  • add imports to fix failing tests (43d6868)

  • refactor!: move extension functions to their corresponding classes (a12fe7d)

  • refactor!: use proper extension function names (efdd01a)

  • fix!: implement extension functions consistently (aacf900)

BREAKING CHANGES

  • This changes the import paths for extension functions.
  • This changes the names of extension functions
  • This changes the name of functions

11.0.0-dev.2 (2023-06-09)

Bug Fixes

  • add imports to fix failing tests (43d6868)

11.0.0-dev.1 (2023-06-07)

  • refactor!: move extension functions to their corresponding classes (a12fe7d)
  • refactor!: use proper extension function names (efdd01a)
  • fix!: implement extension functions consistently (aacf900)

BREAKING CHANGES

  • This changes the import paths for extension functions.
  • This changes the names of extension functions
  • This changes the name of functions

10.0.0 (2023-06-07)

  • fix!: check for two methods parameters orders (#183) (b6d6a75), closes #183

BREAKING CHANGES

  • This requires changes to MethodFingerprint

10.0.0-dev.1 (2023-06-07)

  • fix!: check for two methods parameters orders (#183) (b6d6a75), closes #183

BREAKING CHANGES

  • This requires changes to MethodFingerprint

9.0.0 (2023-05-23)

  • refactor!: rename parameter (526a3d7)

BREAKING CHANGES

  • This changes named parameters.

9.0.0-dev.1 (2023-05-23)

  • refactor!: rename parameter (526a3d7)

BREAKING CHANGES

  • This changes named parameters.

8.0.0 (2023-05-13)

  • feat!: add classDef parameter to MethodFingerprint (#175) (a205220), closes #175

BREAKING CHANGES

  • This changes the signature of the customFingerprint function.

8.0.0-dev.1 (2023-05-10)

  • feat!: add classDef parameter to MethodFingerprint (#175) (a205220), closes #175

BREAKING CHANGES

  • This changes the signature of the customFingerprint function.

7.1.1 (2023-05-07)

Bug Fixes

  • remove count instead of count + 1 instructions with removeInstructions (#167) (98f8eed)

7.1.1-dev.1 (2023-05-07)

Bug Fixes

  • remove count instead of count + 1 instructions with removeInstructions (#167) (98f8eed)

7.1.0 (2023-05-05)

Features

  • add appreciation message for new contributors (d674362)
  • add overload to get instruction as type (49c173d)

7.1.0-dev.2 (2023-05-05)

Features

  • add overload to get instruction as type (49c173d)

7.1.0-dev.1 (2023-04-30)

Features

  • add appreciation message for new contributors (d674362)

7.0.0 (2023-02-26)

  • feat!: merge integrations only when necessary (6e24a85)

BREAKING CHANGES

  • Patcher.addFiles is now renamed to Patcher.addIntegrations

Signed-off-by: oSumAtrIX johan.melkonyan1@web.de

7.0.0-dev.1 (2023-02-26)

  • feat!: merge integrations only when necessary (6e24a85)

BREAKING CHANGES

  • Patcher.addFiles is now renamed to Patcher.addIntegrations

Signed-off-by: oSumAtrIX johan.melkonyan1@web.de

6.4.3 (2023-02-10)

Bug Fixes

  • check CONST_STRING_JUMP instructions for matching string (058d292)

6.4.3-dev.1 (2023-02-10)

Bug Fixes

  • check CONST_STRING_JUMP instructions for matching string (058d292)

6.4.2 (2023-01-17)

Bug Fixes

6.4.2-dev.1 (2023-01-17)

Bug Fixes

6.4.1 (2023-01-15)

Bug Fixes

  • update dependency app.revanced:multidexlib2 (#150) (dd7dd38)

6.4.1 (2023-01-15)

Bug Fixes

  • update dependency app.revanced:multidexlib2 (#150) (dd7dd38)

6.4.1-dev.1 (2023-01-15)

Bug Fixes

  • update dependency app.revanced:multidexlib2 (#150) (dd7dd38)

6.4.0 (2023-01-02)

Features

  • add missing setter to MutableMethod (8f3ecc3)
  • do not fix methods or methods in class merger (4102f43)
  • fix method and field access when merging classes (5c09ef7)
  • make aaptPath nullable (#146) (9f0a09a)

6.4.0-dev.2 (2023-01-02)

Features

  • add missing setter to MutableMethod (8f3ecc3)
  • do not fix methods or methods in class merger (4102f43)
  • fix method and field access when merging classes (5c09ef7)

6.4.0-dev.1 (2022-12-20)

Features

6.3.2 (2022-12-18)

Bug Fixes

  • check if fingerprint string is substring of any string references (c5de9e2)
  • print full exception when patch fails (7cf79e6)

6.3.2-dev.1 (2022-12-18)

Bug Fixes

  • check if fingerprint string is substring of any string references (c5de9e2)
  • print full exception when patch fails (7cf79e6)

6.3.2-dev.1 (2022-12-17)

Bug Fixes

  • print full exception when patch fails (27a8401)

6.3.1 (2022-12-13)

Bug Fixes

  • publicize types when merging files if necessary (#137) (9ec720e)

6.3.1-dev.1 (2022-12-13)

Bug Fixes

  • publicize types when merging files if necessary (#137) (9ec720e)

6.3.0 (2022-12-02)

Features

  • sort patches in lexicographical order (a306561), closes #125

6.2.0 (2022-12-02)

Features

6.1.1 (2022-11-25)

Bug Fixes

  • use MethodUtil.methodSignaturesMatch instead of Method.softCompareTo (bd053b7)

6.1.0 (2022-11-22)

Features

  • apply changes from ReVanced Patcher (ba9d998)

6.0.2 (2022-11-18)

Bug Fixes

  • fallback to patch class name instead of java.lang.Class class name (4164cb0)

6.0.1 (2022-11-14)

Bug Fixes

  • remove unnecessary dummy nop instructions (#111) (f9bc95f)

6.0.0 (2022-10-05)

Code Refactoring

  • improve structuring of classes and their implementations (4aa14bb)

Features

  • remove unused annotation DirectPatternScanMethod (538b2a8)
  • remove unused annotation SincePatcher (4ae9ad0)
  • remove unused extension dependsOn (797286b)
  • remove unused patch extensions (5583904)

BREAKING CHANGES

  • various changes in which packages classes previously where and their implementation
  • These extensions do not exist anymore and any use should be removed
  • The extension does not exist anymore and any use should be removed
  • The annotation does not exist anymore and any use should be removed

5.1.2 (2022-09-29)

Bug Fixes

  • check dependencies for resource patches (9c07ffc)
  • use instruction index instead of strings list index for StringMatch (843e62a)

5.1.1 (2022-09-26)

Performance Improvements

  • decode resources only when necessary (3ba4be2)

5.1.0 (2022-09-26)

Features

  • RwLock for opening files in DomFileEditor (db4348c)

5.0.1 (2022-09-23)

Reverts

5.0.0 (2022-09-21)

Bug Fixes

  • tests: access patternScanResult through scanResult (76676fb)

  • refactor!: move utility methods from MethodFingerprintUtils MethodFingerprint (d802ef8)

  • feat(fingerprint)!: StringsScanResult for MethodFingerprint (3813e28)

BREAKING CHANGES

  • Imports will have to be updated from MethodFingerprintUtils to MethodFingerprint.Companion.

Signed-off-by: oSumAtrIX johan.melkonyan1@web.de

  • MethodFingerprint now has a field for MethodFingerprintScanResult. MethodFingerprintScanResult now holds the previous field MethodFingerprint.patternScanResult.

Signed-off-by: oSumAtrIX johan.melkonyan1@web.de

4.5.0 (2022-09-20)

Features

  • section acknowledgements for issue templates (a0cb449)

4.4.2 (2022-09-18)

Bug Fixes

  • fingerprint: do not throw on MethodFingerprint.result getter (2f7e62e)

Performance Improvements

  • fingerprint: do not resolve already resolved fingerprints (4bfd7eb)

4.4.1 (2022-09-14)

Bug Fixes

4.4.0 (2022-09-09)

Features

4.3.0 (2022-09-09)

Features

4.2.3 (2022-09-08)

Bug Fixes

  • wrong value for iterator in PatchOptions (e31ac1f)

4.2.2 (2022-09-08)

Bug Fixes

  • invalid type propagation in options (b873228), closes #98

4.2.1 (2022-09-08)

Bug Fixes

  • make patcher version public (76c45dd)

4.2.0 (2022-09-08)

Bug Fixes

  • remove repeatable from PatchDeprecated (6e73631)

Features

  • SincePatcher annotation (25f74dc)

4.1.5 (2022-09-08)

Bug Fixes

  • broken deprecation message (62aa295)

4.1.4 (2022-09-08)

Bug Fixes

  • handle option types and nulls properly (aff4968)

4.1.3 (2022-09-07)

Bug Fixes

  • only run list option check if not null (4055939)

4.1.2 (2022-09-07)

Bug Fixes

  • invalid types for example options (79f91e0)

4.1.1 (2022-09-07)

Bug Fixes

  • handle private companion objects (ad3d332)

4.1.0 (2022-09-07)

Features

  • deprecation for patches (80c2e80)

4.0.0 (2022-09-07)

Code Refactoring

BREAKING CHANGES

  • Options has been moved from Patch to a new interface called OptionsContainer and are now handled entirely different. Make sure to check the examples to understand how it works.

3.5.1 (2022-09-06)

Bug Fixes

  • add tests for PathOption (d6308e1)
  • PathOption should be open, not sealed (a562e47)
  • typo in ListOption (3921648)

Performance Improvements

  • make exception an object (75d2be8)

3.5.0 (2022-09-05)

Features

  • default value for Package.versions annotation parameter (131dedd)

3.4.1 (2022-09-03)

Bug Fixes

  • remove default param from Package.versions (4b81318)

3.4.0 (2022-08-31)

Features

3.3.3 (2022-08-14)

Bug Fixes

  • show error message if cause is null (f9da2ad)

3.3.2 (2022-08-06)

Bug Fixes

3.3.1 (2022-08-03)

Bug Fixes

  • revert soft dependencies (7b2d058)

3.3.0 (2022-08-02)

Features

  • add getValue & setValue for PatchOption (2572cd0)

3.2.1 (2022-08-02)

Bug Fixes

  • check if patch option requirement is met (14a73bf)

3.2.0 (2022-08-02)

Features

  • PatchOptions#nullify to nullify an option (371f0c4)

3.1.0 (2022-08-02)

Features

  • validator for patch options (4e2e772)

3.0.0 (2022-08-02)

Features

  • registry for patch options (2431785)

BREAKING CHANGES

  • Patch options now use the PatchOptions registry class instead of an Iterable. This change requires modifications to existing patches using this API.

2.9.0 (2022-08-02)

Bug Fixes

  • show error message instead of null (8d95b14)

Features

  • exclusive mutable access to files (814ce0b)

2.8.0 (2022-08-01)

Bug Fixes

  • remove requirement for solution [skip ci] (#80) (9a4d30e)

Features

2.7.0 (2022-08-01)

Features

2.6.0 (2022-07-31)

Features

  • add Patch#dependsOn extension (523f67b)
  • Soft Dependencies for Patches (8c12f8d)

2.5.2 (2022-07-24)

2.5.1 (2022-07-17)

Bug Fixes

  • close stream when closing DomFileEditor (77604d4)

2.5.0 (2022-07-11)

Bug Fixes

  • missing additional items [skip ci] (0ebab8b)

Features

  • feature request issue template (1b39278)
  • issue templates [skip ci] (112bc99)

2.4.0 (2022-07-09)

Features

2.3.1 (2022-07-07)

Bug Fixes

2.3.0 (2022-07-05)

Features

  • nullability for BytecodePatch constructor (#59) (4ea030d)

2.2.2 (2022-07-04)

Bug Fixes

  • MethodWalker not accounting for all reference instructions (48068cb)

2.2.1 (2022-07-03)

Bug Fixes

  • more useful error message (4b2e323)

2.2.0 (2022-07-02)

Bug Fixes

  • DomFileEditor opening in- and output streams on the same file (83187c9)

Features

  • remove deprecated functions (ada5a03)
  • streams overload for XmlFileHolder (6f72c4c)

2.2.0-dev.3 (2022-07-02)

Bug Fixes

  • DomFileEditor opening in- and output streams on the same file (83187c9)

2.2.0-dev.2 (2022-07-02)

Features

  • streams overload for XmlFileHolder (6f72c4c)

2.2.0-dev.1 (2022-07-02)

Features

  • remove deprecated functions (ada5a03)

2.1.2 (2022-06-29)

Bug Fixes

  • invert fingerprint resolution condition of customFingerprint (e2faf4c)

2.1.1 (2022-06-28)

2.1.0 (2022-06-28)

Features

  • log failed patches due to failed dependencies (a467fbb)

2.0.4 (2022-06-27)

2.0.3 (2022-06-27)

2.0.2 (2022-06-27)

2.0.1 (2022-06-26)

Bug Fixes

  • use Exception instead of MethodNotFoundException (2fc4ec4)

2.0.0 (2022-06-26)

Code Refactoring

  • migrate from Signature to Fingerprint (efa8ea1)

BREAKING CHANGES

  • Not backwards compatible, since a lot of classes where renamed.

1.11.0 (2022-06-24)

Features

  • add replace and remove extensions (#50) (92ac5e4)

1.10.2 (2022-06-23)

Bug Fixes

  • dexlib must be propagated (b738dcd)

1.10.1 (2022-06-23)

Bug Fixes

  • callback only when inteded (e3bf367)
  • mutability of local variable modified (0e87ef5)

1.10.0 (2022-06-23)

Features

1.9.0 (2022-06-22)

Bug Fixes

  • callback for each file instead of class (930768d)

Features

1.8.0 (2022-06-22)

Features

1.7.2 (2022-06-22)

Bug Fixes

  • add execute permission to ./gradlew file (#46) (34f607a)

1.7.1 (2022-06-22)

Reverts

  • revert "feat: use of java.util.logging.Logger" (e8488b3)

1.7.0 (2022-06-22)

Features

  • migrate logger to slf4j (8f66f9f)

1.6.0 (2022-06-22)

Features

  • use of java.util.logging.Logger (9c39c9e)

1.5.0 (2022-06-22)

Features

  • use streams to write the dex files (64bae88)

1.4.0 (2022-06-22)

Features

  • return a File instance instead of ExtFile (68174bb)

1.3.4 (2022-06-21)

Bug Fixes

1.3.3 (2022-06-21)

Bug Fixes

  • add docs (trigger release) (6628b78)

Reverts

1.3.2 (2022-06-21)

Bug Fixes

  • return resourceFile to caller (1f75777)

1.3.1 (2022-06-21)

Bug Fixes

  • InlineSmaliCompiler.compile using 0 registers instead of 1 by default (835a421)

1.3.0 (2022-06-20)

Features

  • parametersCount for InlineSmaliCompiler instead of parameters (ad6c5c8)
  • simplify adding instructions (e47b67d)

1.2.9 (2022-06-20)

Bug Fixes

1.2.8 (2022-06-18)

Bug Fixes

1.2.7 (2022-06-18)

Bug Fixes

  • version not working with apktool due to cache (03f5ee0)

1.2.6 (2022-06-18)

Bug Fixes

  • remove javadoc jar (also trigger release) (56f6ca3)

1.2.5 (2022-06-17)

Bug Fixes

1.2.4 (2022-06-15)

Reverts

1.2.3 (2022-06-14)

Bug Fixes

1.2.2 (2022-06-14)

Bug Fixes

1.2.1 (2022-06-14)

Bug Fixes

  • Patcher setting BuildOptions too late (6a5c873)

1.2.0 (2022-06-14)

Features

  • allow custom framework path to be specified (d3a580e)

1.1.0 (2022-06-11)

Bug Fixes

Features

  • allow custom aapt path to be specified (8eb4a8f)

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 cd57a8c9a0 (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.

1.0.0-dev.18 (2022-06-04)

Features

  • Dependencies annotation (83d608a)
  • optional forStaticMethod parameter for InlineSmaliCompiler.compileMethodInstructions (28b9847)

1.0.0-dev.17 (2022-05-31)

Features

  • patch dependencies annotation and PatcherOptions (8442991)

1.0.0-dev.16 (2022-05-27)

Bug Fixes

  • JarPatchBundle loading non-class files to class loader (3f0c740)
  • remove dependency to fork of Apktool (0fa529f)

Features

  • migrate to DexPatchBundle and JarPatchBundle (7573db2)

1.0.0-dev.15 (2022-05-25)

Features

  • utility functions to get metadata of patch & sigs (72f16b7)

1.0.0-dev.14 (2022-05-24)

Bug Fixes

  • reformat (trigger release) (45a167e)

1.0.0-dev.13 (2022-05-24)

Performance Improvements

  • decode manifest only when not using resource patcher (40b1fa4)

1.0.0-dev.12 (2022-05-22)

Bug Fixes

  • using old instance of Androlib when saving (5630e49)

1.0.0-dev.11 (2022-05-22)

Features

  • PatchLoader (1a99eca)
  • use annotations instead of metadata objects (6726884)

1.0.0-dev.10 (2022-05-07)

Bug Fixes

  • qualifying Element with wrong package (4d74de4)

1.0.0-dev.9 (2022-05-07)

Bug Fixes

  • compareSignatureToMethod not matching correctly in case opcodes are null (5ae5e98)
  • ConcurrentModificationException while iterating through proxies and modifying it (bfeeaf4)
  • PackageMetadata (305a817)
  • replaceWith not replacing classes with used class proxies (f0f3403)
  • adding existing classes to the patchers cache (4281546)
  • always return PatchResultSuccess on patch success (866b03a)
  • applying no patches throwing error (f88c118)
  • applyPatches not returning successful patches (8b70bb4)
  • Classes not being written properly because of array shifting (1471956)
  • failing tests temporarily (66b08f8)
  • fix classes having multiple instances of fields (b711b80)
  • fix classes having multiple method instances (12c10d8)
  • Fixed writer & signature resolver, improved tests & speed, minor refactoring (bb42fa3)
  • fuzzy resolver warning params were turned around (d49df10)
  • incorrect pattern offset (03700ff)
  • make methodMetadata nullable in MethodSignatureMetadata (864e38c)
  • make warnings nullable instead of lateinit (04b49b8)
  • match to correct signature method parameters (c49071a)
  • MethodSignature#resolved throwing an exception (82b1e66)
  • Move proxy package out of cache package (6bc4e7e)
  • null check causing an exception (560c485)
  • Patcher not writing resolved methods (d15240d)
  • reaching all constructors not possible (37fa994)
  • remove leftover debug code (4458141)
  • return mutable set of classes (84bc7e0)
  • returning failure on success (3b68d5c)
  • Search method map for existing class proxy (d5e694c)
  • string signature in SignatureResolver (ac36d19)
  • Suppress unused for addFiles (a0d6d46)
  • throwing in case the opcode patterns do not match (f72dd68)
  • use Array instead of Iterable for methodParameters (312235b)
  • write all classes (6ad51aa)

Code Refactoring

  • bump multidexlib2 to 2.5.2.r2 (32e6458)
  • Change all references from Array to Iterable (264989f)

Features

  • add MethodWalker (659e108)
  • add p naming scheme to smali compiler (38556d6)
  • add extensions for cloning methods (df7503b)
  • add findClass method with className (78235d1)
  • Add first tests (6767c8f)
  • add fuzzy resolver (a492808)
  • add immutableMethod (eed1cfd)
  • add inline smali compiler (dbafe2a)
  • add missing test for fields (4022b8b)
  • add or extension for AccessFlags (aec5eeb)
  • Add patch metadata (8544fc4), closes ReVancedTeam/revanced-patches#1
  • Add warnings for Fuzzy resolver (643a14e)
  • allow classes to be overwritten in addFiles and resolve signatures when applyPatches is called (5f71a34)
  • Allow unknown opcodes using null (f4a47d4)
  • Finish first patcher test (a9e4e8a)
  • Improve SignatureResolver (88a6a27)
  • migrate to dexlib (be51f42)
  • Minor refactor and return proxy, if class has been proxied already (2d3c611)
  • properly manage ClassProxy & add ProxyBackedClassList (2319787)
  • remaining mutable EncodedValue classes (7d38bb0)
  • string signature (#22) (c245edb)

Performance Improvements

  • depend on androlib instead of ApkDecoder (e5c054a)
  • do not resolve empty signatures list (1f7bf3a)
  • lazy-ify all mutable clones (05e4400)
  • optimize indexOf call away (f8e978a)
  • use Set instead of List since there are no dupes (6221387)
  • use String List and compare instead of any lambda (aed4fd9)

Reverts

  • AccessFlag extensions not working with IDE (e161f7f)
  • previous commits check for dupes in dexFile, not cache (433914f)

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

1.0.0-dev.8 (2022-03-24)

Performance Improvements

  • check type instead of class (47eb493)

1.0.0-dev.7 (2022-03-24)

Bug Fixes

1.0.0-dev.6 (2022-03-24)

Bug Fixes

  • MethodResolver: strip labels nodes so opcode patterns match (cd57a8c)

1.0.0-dev.5 (2022-03-24)

Bug Fixes

  • MethodResolver: strip labels and line numbers so opcode patterns match (8d1bb5f)

1.0.0-dev.4 (2022-03-23)

Bug Fixes

  • give ClassWriter a ClassReader for symtable (e8f6973)

1.0.0-dev.3 (2022-03-23)

Features

1.0.0-dev.2 (2022-03-23)

Bug Fixes

  • set marklimit to Integer.MAX_VALUE (ab6453c)

1.0.0-dev.1 (2022-03-23)

Bug Fixes

  • avoid ignoring test resources (fixes #1) (d5a3c76)
  • current must be calculated after increment (5f12bab)
  • gradle: publish source and javadocs (87bbde5)
  • Io: fix finding classes by name (460d62a)
  • Io: JAR loading and saving (#8) (4d98cbc)
  • nullable signature members (#10) (8db8893)
  • Patch should have access to the Cache (6c0f082)
  • remove broken code (0e72a6e)
  • set index for insertAt to 0 by default (1769132)
  • workflow on dev branch (7e67daf)

Code Refactoring

  • convert Patch to abstract class (23e897a)
  • Optimize Signature class (#11) (49beec9)
  • Rename net.revanced to app.revanced (3ab42a9)

Features

  • Add findParentMethod utility method (#4) (00c6ab7)

BREAKING CHANGES

  • 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.